给出一个JSON字符串:
{
"__ENTITIES": [
{
"__KEY": "196",
"__STAMP": 1,
"ID": 196,
"firstName": "a",
"middleName": "b",
"lastName": "c",
"ContactType": {},
"addressCollection": {
"__deferred": {
"uri": "/rest/Contact(196)/addressCollection?$expand=addressCollection"
}
},
"__ERROR": [
{
"message": "Cannot save related entity of attribute \"ContactType\" for the entity of datastore class \"Contact\"",
"componentSignature": "dbmg",
"errCode": 1537
}
]
}
]
}
是否有方法可以获得__ERROR
记录,我知道我可以使用
var mydata = json.parse(mydata)
然后从mydata
对象中找到它。但我希望有一种方法只返回ERROR
字段
json.parse(mydata, "__ERROR")
并且只获取__ERROR
字段中的信息而不将整个JSON字符串转换为对象
答案 0 :(得分:4)
“有没有方法可以获得
__ERROR
记录,我知道我可以使用var mydata = json.parse(mydata)
...但我希望有... {{1}之类的东西}“
可能有库可以执行此操作,但内置任何内容。您需要编写针对所需数据的代码。
您最接近的将是将复活功能传递给json.parse(mydata, "__ERROR")
。
JSON.parse
答案 1 :(得分:1)
如果存在这样的功能,无论如何都必须解析整个事情,找到你正在寻找的密钥。
首先解析它,然后获得你想要的密钥:
var mydata = JSON.parse(mydata);
var errorObj = mydata.__ENTITIES[0].__ERROR[0];
如果需要,您可以创建自己的功能:
function parseAndExtract(json, key) {
var parsed = JSON.parse(json);
return parsed[key];
}
答案 2 :(得分:1)
不将整个json字符串转换为对象
这几乎不可能,你需要某种懒惰的评估,不适合JS。此外,您需要编写自己的解析器,以便比原始JSON.parse
慢得多。
是否有方法只获取__ERROR记录
不是我知道的。此外,这是一个不寻常的任务,遍历整个对象树,寻找具有该名称的第一个属性。明确更好地访问__ENTITIES[0].__ERROR[0]
。