json - 在 Matlab 结构体的字段名称中使用句点

标签 json matlab struct

我正在使用 webwrite 发布到 api。我尝试设置用于发布的 json 对象中的字段名称之一是 odata.metadata。我正在为 json 对象创建一个如下所示的结构:

json = struct('odata.metadata', 元数据, 'odata.type', 类型, '名称', 名称,);

但我收到错误

  Error using struct
  Invalid field name "odata.metadata"

这是我尝试在 Matlab 中使用的 json 对象。为简单起见,所有字符串:

{
    "odata.metadata": "https://website.com@Element",
    "odata.type": "Blah.Blah.This.That",
    "Name": "My Object"
}

有办法提交这个 json 对象还是失败了?

最佳答案

字段名称中不允许包含点。原因是因为这会与访问结构本身内的另一个嵌套结构相混淆。

例如,执行 json.odata.metadata 将被解释为 json 是一个 struct,其中成员的字段名称为 odata 其中 odata 有另一个字段名称为 metadata 的成员。这不会被解释为组合字段名称为odata.metadata的成员。您必须将该字段重命名为其他名称,或者稍微更改字段名称的约定。

通常,约定是用下划线替换点。如果您不愿意自己手动重命名字段名称,则可以使用名为 matlab.lang.makeValidName 的函数来自动处理此问题。它接受一个字符串并将其转换为有效的字段名称。该功能在R2014a中引入。对于旧版本,它称为 genvarname

例如:

>> matlab.lang.makeValidName('odata.metadata')

ans =

odata_metadata
<小时/>

因此,要么用 _ 替换所有点以确保没有歧义,要么使用 matlab.lang.makeValidNamegenvarname 来处理这是给你的。

关于json - 在 Matlab 结构体的字段名称中使用句点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33339381/

相关文章:

performance - MATLAB 向量化 : creating a cell array of neighbor index arrays

python - matlab有没有使用条件连接数组的函数?

matlab - 在 MATLAB 中根据一组内部 3D 散点绘制表面

c - 结构内部结构

c - 未找到结构体成员

php - Array_push 在 JSON 文件中给出 null

javascript - 使用 jQuery 迭代 JSON 对象数组时出现奇怪的行为

c - 用 C 编写比较器

json - 如何将json文件内容作为文档导入到mongodb?

json - 在 Qt 4.7 中解析 JSON 的最简单方法