从 Matlab 创建 JSON

Create JSON from Matlab

我有一个包含大量变量的工作区,我想使用 JSONlab 将其转换为 JSON 文档。到目前为止,我的代码如下所示:

loadjason = {'{"Duration":Duration,"Num_Samples":nsamples,"Frequency":Freq,"Num_Channels":nchannels1}')

不在双引号中的项目(即 Freq)是来自我的 MATLAB 工作区的变量,但我的输出是:

Error using loadjson>error_pos (line 482)
JSONparser:invalidFormat: Value expected at position 13:
{"Duration":<error>Duration,"Num_Samples

Error in loadjson>parse_value (line 471)
   error_pos('Value expected at position %d');

Error in loadjson>parse_object (line 206)
   val = parse_value(varargin{:});

Error in loadjson (line 96)
   data{jsoncount} = parse_object(opt);`

如何将变量传递到 loadjson 中,以便它们被读取为值而不是文字?

loadjason = {'{"Duration":Duration,"Num_Samples":nsamples,"Frequency":Freq,"Num_Channels":nchannels1}')

无效 JSON。字符串值,例如 Duration,如果是字符串(例如,'"Duration":"5 seconds"'),则需要用引号引起来。数值不需要引号。例如,'"Duration":5' 是有效的。此外,您最外面的括号不匹配,并且您不需要 { } 将整个字符串括起来两次。修改您的 MATLAB 代码以生成类似这样的内容,

loadjason = '{"Duration":5,"Num_Samples":1,"Frequency":1,"Num_Channels":1}'

取整型值:

loadjason = '{"Duration":'
temp = int2str(Duration)
loadjason = strcat(loadjason,temp)

loadjason = '{"Num_Samples":'
temp = int2str(nsamples)
loadjason = strcat(loadjason,temp)

loadjason += ',{"Frequency":'
temp = int2str(freq)
loadjason = strcat(loadjason,temp)

loadjason += ',{"Num_Channels":'
temp = int2str(nchannels1)
loadjason = strcat(loadjason,temp)

loadjason += '}'

并继续处理其余变量。或者,您可以创建一个函数来为您执行此操作。