【问题标题】:Linq JObject queryLinq JObject 查询
【发布时间】:2013-07-25 13:27:11
【问题描述】:

我在使用 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,
 }
}

【问题讨论】:

  • 你能发布你的完整 json 字符串吗?你也想得到什么?
  • @ashok 添加了更多 json 和一些我想要获取的数据。

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


【解决方案1】:

你可以直接获取这些值:

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

【讨论】:

  • 后续问题:) CustomData 是动态的,如何搜索“Key”并显示“Value”。
  • var value = rss["RegistrationCase"]["CustomData"][key]["Value"];
  • 试过了,给了我:使用无效键值访问的 JArray 值:“JournalNumber”。预期数组位置索引。
猜你喜欢
  • 2013-07-20
  • 1970-01-01
  • 1970-01-01
  • 2016-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-03
  • 2016-01-31
相关资源
最近更新 更多