2013-07-25 41 views
1

我有一些jobject和jarray linq查询问题。我得到这个错误:Linq JObject查询

Unable to cast object of type 'Newtonsoft.Json.Linq.JObject' to type  'Newtonsoft.Json.Linq.JArray'. 

我的代码:

string fetchResult = JsonConvert.SerializeObject(sidebar, Formatting.Indented); 
JObject rss = JObject.Parse(fetchResult); 

var jsonModel = from item in (JArray)rss["RegistrationCase"] 
         select new DataList 
         { 
          RegistrationTypeName = item["RegistrationTypeName"].Value<string>(), }; 

如果我删除(Jarray)我得到:在Newtonsoft.Json.Linq.JProperty无法访问的孩子的价值。 JSON,jobject:例如:我想要RegistrationTypeName,FirstName和JournalNumber的值。

{ 
"Status": null, 
"RegistrationCase": { 
"RegistrationTypeName": " ", 
"ExpireDate": null, 
"PersonId": 7, 
"Person": { 
    "FirstName": " ", 
    "GenderValue": 2, 
    "Gender": 2, 
}, 
"UserId": 7, 
"User": { 
    "UserName": "NO-DOM\\wme", 
    "LastName": null, 
    "Id": 7, 
}, 
"Transactions": [], 
"Comments": [], 
"CustomData": [ 
    { 
    "Key": "JournalNumber", 
    "Value": "0654-84148-00000-25", 
    "Id": 3, 
    }, 
    { 
    "Key": "IsConsentGiven", 
    "Value": "False", 
    "Id": 4, 
    }, 
    { 
], 
"FileId": null, 
"File": null, 
"Id": 7, 
} 
} 
+0

u能乌拉圭回合后全JSON字符串&U希望太什么? –

+0

@ashok添加了一些更多的json和我想要获得的一些数据。 – stianboe

回答

2

u能获取这些值直接,如:

var RegistrationTypeName = rss["RegistrationCase"]["RegistrationTypeName"]; 
    var FirstName = rss["RegistrationCase"]["Person"]["FirstName"]; 
    var JournalNumber = rss["RegistrationCase"]["CustomData"][0]["Value"]; 
+0

后续问题:) CustomData是动态的,我如何搜索“Key”并显示“Value”。 – stianboe

+0

'var value = rss [“RegistrationCase”] [“CustomData”] [key] [“Value”];' –

+0

试过,给我:访问JArray值的键值无效:“JournalNumber”。预期阵列位置索引。 – stianboe