代码之家  ›  专栏  ›  技术社区  ›  craq

如何确保Matlab的jsonEncode总是输出一个向量

  •  2
  • craq  · 技术社区  · 7 年前

    JSON用方括号对向量进行编码。标量没有方括号。当然,标量可以看作是长度为1的向量的特殊情况。

    有没有我可以传给matlab的论点? jsonencode 要确保变量始终编码为矢量?在下面的示例中,我希望两者都是 xe ye 方括号:

    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,同上 isscalar ismatrix )

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

    1 回复  |  直到 7 年前
        1
  •  2
  •   Paolo    7 年前

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

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

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