我正在使用 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.makeValidName
或 genvarname
来处理这是给你的。
关于json - 在 Matlab 结构体的字段名称中使用句点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33339381/