我必须解析.net中从Lotus Domino REST API返回的JSON。 我用
dynamic data = Newtonsoft.Json.JsonConvert.DeserializeObject(myString);
,数据对象是Newtonsoft.Json.Linq.Jobject
[
{
"@href":"http://domsrv.webdev.local:80/dbname.nsf/api/data/collections/name/.LkpCust/unid/6F4F9DE95F81A696C12572F3003BBC52",
"@link":
{
"rel":"document",
"href":"http://domsrv.webdev.local:80/dbname.nsf/api/data/documents/unid/6F4F9DE95F81A696C12572F3003BBC52"
},
"@entryid":"10-6F4F9DE95F81A696C12572F3003BBC52",
"@unid":"6F4F9DE95F81A696C12572F3003BBC52",
"@noteid":"12ED2",
"@position":"10",
"@siblings":60613,
"@form":".CompanyProfile",
"CompanyName":"ACME Inc."
}
]
这肯定是一个愚蠢的问题,但除了data.CompanyName之外,我找不到从数据对象获取任何值的方法。
data.CompanyName返回“ACME Inc。”
虽然我不知道如何获取@ unid,@ noteid,@ position或其中任何键以“@”字符开头的其他项目的值
答案 0 :(得分:2)
好的,YASADQ(又一个自我回答的愚蠢问题)......
考虑一下,我可能会避免发布问题。
而不是做
data[i].@unid
,因为@ char是无法识别的,所以
Newtonsoft.Json.Linq.JObject myObj = data[i];
string myVal = myObj.Property("@unid").ToString();
完成
答案 1 :(得分:1)
很高兴看到你已经找到了.net的解决方案。 FWIW,在JavaScript中解析数据服务响应时使用类似的模式。
而不是:
var myVal = myObj.@unid;
你必须这样做:
var myVal = myObj['@unid'];