如何确保 MATLAB 的 JSON 编码始终输出向量


Json用方括号对向量进行编码。标量没有方括号。当然,标量可以看作长度为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分类为向量(isvector返回1,isscalarismatrix也是如此(。

我正在将数据导出到一个json文件中,该文件由属于另一个项目的解析器读入。解析器期望有一个向量,当它试图循环遍历元素时就会出错。我将研究如何提高解析器的健壮性,但这并不是一件小事,而且在matlab的jsonencode中可能有一个简单的选项。

有趣的是,从文档中看,似乎没有允许这样做的名称-值对。但是,如果将标量封装在单元格中,则生成的输出就是您要查找的输出。

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

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

最新更新