2014-01-08 53 views
0

我必须解析从.net中的Lotus Domino REST API返回的JSON。 我用Newtonsoft.Json.Linq.JObject包含以“@”开头的密钥

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或任何其他项目,其重点开始用“@”字符的值

回答

2

好吧,YASADQ(然而,另一个自我阿呆回答问题)...

多思考一下,也许我会避免发布问题。

而不是做

data[i][email protected] 

,因为@字符是无法识别的东西赋予空,我做

Newtonsoft.Json.Linq.JObject myObj = data[i]; 
string myVal = myObj.Property("@unid").ToString(); 

完成

0

很高兴见到你已经找到了解决方案。净。 FWIW,在JavaScript中解析数据服务响应时使用类似的模式。

取而代之的是:

var myVal = [email protected]; 

你必须这样做:

var myVal = myObj['@unid']; 
相关问题