在MATLAB中读取Json对象

时间:2017-02-09 12:05:32

标签: json matlab

{
  "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

代码:

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);

我想在文件中替换Updated参数(Breite)。需要指导。

2 个答案:

答案 0 :(得分:2)

如果您使用的是R2016b或更高版本,则可以使用jsondecode将JSON数据转换为struct。然后,您可以使用jsonencode修改所需的字段,更改值并重新编码为json。

如果您的数据在文件中,您可以在使用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,因此可能无法按预期保留空格,超量等。

答案 1 :(得分: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