2014-01-08 54 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']; 
相關問題