json - 如何保证matlab的jsonencode总是输出一个向量
问题描述
Json 用方括号对向量进行编码。标量没有方括号。当然,标量可以看作是长度为 1 的向量的特例。
是否有一个参数我可以传递给 matlabjsonencode
以确保变量始终被编码为向量?在以下示例中,我希望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,与 doisscalar
和一样ismatrix
)。
我正在将数据导出到一个 json 文件,该文件由属于另一个项目的解析器读取。解析器需要一个向量,并在尝试遍历元素时出错。我将看看如何提高解析器的鲁棒性,但这并非易事,并且在 matlab 的 jsonencode 中可能有一个简单的选项。
解决方案
有趣的是,从文档来看,似乎没有允许这样做的名称值对。但是,如果您将标量包装在一个单元格中,则生成的输出就是您要查找的输出。
x.data = {[0]};
y.data = [0 1];
xe = jsonencode(x)
ye = jsonencode(y)
>>xe
'{"data":[0]}'
>>ye
'{"data":[0,1]}'
因此,您需要检查data
结构中字段的大小,并根据它是否为单个值将其包装在单元格中。
推荐阅读
- sabre - Sabre 多城市 API
- ms-word - 如何使用 office.js 隐藏绑定内容?
- gmail-api - 如何通过 API 在 Gmail 中设置默认回复地址?
- reactjs - 动态更改组件内按钮的可见性
- javascript - 单击时更改 Font Awesome 图标的类别和颜色
- c# - 优化从 char * (C++) 到字节数组 (c#) 的复制
- delphi - 通过运行检测EXE文件是否被锁定?
- python - 如何以及何时评估 python @properties
- ios - 使用 MDM 在同一 iOS 设备中安装或删除其他应用程序时在我的应用程序中通知
- php - 页面在验证时不断重定向