如何确保Matlab的jsonencode始终输出矢量

时间:2018-08-07 22:01:58

标签: json matlab

Json编码带有方括号的向量。标量没有方括号。当然,标量可以看作是length = 1的向量的特例。

是否可以将参数传递给matlab的jsonencode以确保始终将变量编码为向量?在下面的示例中,我希望xeye都带有方括号:

x.data = [0];
y.data = [0 1];

xe = jsonencode(x) % '{"data":0}'  ..... I want '{"data":[0]}'
ye = jsonencode(y) % '{"data":[0,1]}'

有趣的是,matlab已经将x.data分类为向量(isvectorisscalar都返回1)。

我正在将数据导出到json文件,该文件由属于另一个项目的解析器读取。解析器期望一个向量,并在尝试遍历元素时跳闸。我将看一下如何提高解析器的健壮性,但这并不是一件容易的事,而且在matlab的jsonencode中可能有一个简单的选择。

1 个答案:

答案 0 :(得分:2)

有趣的是,在documentation中似乎没有一个名称值对允许这样做。但是,如果将标量包装在一个单元格中,则生成的输出就是您要寻找的输出。

x.data = {[0]};
y.data = [0 1];

xe = jsonencode(x) 
ye = jsonencode(y) 

>>xe 
       '{"data":[0]}'
>>ye
       '{"data":[0,1]}'

因此,您需要检查结构中data字段的大小,并根据它是否是单个值将其包装在单元格中。