2017-02-09 6 views
1
{ 
    "NX-Matlab": 
{ 
    "Volumen": 200, 
    "Wanddicke": 3 
    }, 

    "Matlab-NX": { 

    "n1": { 
     "Fließ barriere oder Fließhilfe": 1, 
     " Querschnittsart": 1, 
     "Geometrieparameter": { 
     "Breite": 2, 
     "Höhe": 4.479, 
     "Anzahl": 3 

Код:Чтение Json объект в MATLAB

clc 


fid = fopen('filename.json', 'r'); 

str = fread(fid,'*char').'; 

fclose(fid); 

J = jsondecode(str); 

J.Matlab_NX.n1.Geometrieparameter.Breite = 3; 

outputjson = jsonencode(J); 

fileID = fopen('filename.json','w'); 
fwrite(fileID, outputjson); 
fclose(fileID); 

Я хотел заменить обновление параметров (Breite) в файле. Нужно руководствоваться.

ответ

1

Если вы используете R2016b или более позднюю версию, вы можете использовать jsondecode для преобразования данных JSON в struct. Затем вы можете изменить нужные поля, изменить значение и перекодировать как json, используя jsonencode.

Если данные в файл, вы можете прочитать содержимое файла в виде строки до декодирования с jsondecode

fid = fopen('filename.json', 'r'); 
str = fread(fid, '*char').'; 
fclose(fid); 
J = jsondecode(str); 

% Change the value 
J.Matlab_NX.n1.Geometrieparameter.Breite = 3 

Если вы используете старые версии MATLAB, представление обмена JSONlab файла очень отлично, а также преобразует ваши данные в struct.

Следует отметить, что с помощью любого из этих методов имена полей должны быть преобразованы в valid fieldnames, поэтому пробелы, подгибы и т. Д. Могут не сохраниться, как вы ожидаете.

0

Начиная с 2014b вы также можете использовать внутренние функции matlab.internal.webservices.fromJSON() и matlab.internal.webservices.toJSON() для преобразования строки JSON в структуры данных Matlab и обратно в JSON.

Ваш пример будет читаться следующим образом:

obj = matlab.internal.webservices.fromJSON(fileread('filename.json')); 
obj.Matlab_NX.n1.Geometrieparameter.Breite = 3; 
jsonStr = matlab.internal.webservices.toJSON(obj); 
% write jsonStr to file if needed 
Смежные вопросы