Linq JObject查询

时间:2013-07-25 13:27:11

标签: c# json linq asp.net-mvc-4 json.net

我在jobject和jarray linq查询中遇到了一些问题。我收到这个错误:

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,
 }
}

1 个答案:

答案 0 :(得分:2)

你可以直接得到这些值:

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