Newtonsoft Json 在 C# 中获取 jqGrid ajax Json 字符串的嵌套数组
Get jqGrid ajax Nested Array of Json string in C# by Newtonsoft Json
我正在尝试解析 Json 字符串并收集其中存在的数组值。
{"_search":true,"nd":1492064211841,"rows":30,"page":1,"sidx":"","sord":"asc","filters":"{\"groupOp\":\"OR\",\"rules\":[{\"field\":\"Emp_ID\",\"op\":\"cn\",\"data\":\"ASAS\"},{\"field\":\"Name\",\"op\":\"cn\",\"data\":\"ASAS\"},{\"field\":\"Designation\",\"op\":\"cn\",\"data\":\"ASAS\"},{\"field\":\"City\",\"op\":\"cn\",\"data\":\"ASAS\"},{\"field\":\"State\",\"op\":\"cn\",\"data\":\"ASAS\"},{\"field\":\"Country\",\"op\":\"cn\",\"data\":\"ASAS\"}]}"}
PS: Above string is coming from jqGrid Ajax to the WebMethod in C#.
我没有成功获取 filters->rules[0]->data
我试过的:
dynamic jObj = JObject.Parse(postData);
var data = jObj.filters.rules[0].data;
出现错误:'Newtonsoft.Json.Linq.JValue' 不包含 'rules' 的定义。
dynamic jObj = JObject.Parse(postData);
var filters = jObj.filters; //Sucess: getting filters here
var rules1 = filters["rules"]; //Error: 'Newtonsoft.Json.Linq.JValue' does not contain a definition for 'rules'.
var rules2 = filters.rules; //Error: 'Newtonsoft.Json.Linq.JValue' does not contain a definition for 'rules'.
如何在 filters->rules AND filters->rules[0]->data 中获取值?
我不了解 C#,但我在 JavaScript
上尝试过
在您的 json 中,过滤器字段不正确 json 它是字符串
我已经在 javascript 上做了这个,可能对你有帮助
var a = {"_search":true,"nd":1492064211841,"rows":30,"page":1,"sidx":"","sord":"asc","filters":"{\"groupOp\":\"OR\",\"rules\":[{\"field\":\"Emp_ID\",\"op\":\"cn\",\"data\":\"ASAS\"},{\"field\":\"Name\",\"op\":\"cn\",\"data\":\"ASAS\"},{\"field\":\"Designation\",\"op\":\"cn\",\"data\":\"ASAS\"},{\"field\":\"City\",\"op\":\"cn\",\"data\":\"ASAS\"},{\"field\":\"State\",\"op\":\"cn\",\"data\":\"ASAS\"},{\"field\":\"Country\",\"op\":\"cn\",\"data\":\"ASAS\"}]}"}
console.log(a.filters)
是returns
"{"groupOp":"OR","rules":[{"field":"Emp_ID","op":"cn","data":"ASAS"},{"field":"Name","op":"cn","data":"ASAS"},{"field":"Designation","op":"cn","data":"ASAS"}
它是字符串,现在我再次在 JSON
上解析它
b = JSON.parse(a.filters)
console.log(b.rules)
现在它returns 统治对象
您必须像这样解析内部对象:
var obj = "{\"_search\":true,\"nd\":1492064211841,\"rows\":30,\"page\":1,\"sidx\":\"\",\"sord\":\"asc\",\"filters\":\"{\\"groupOp\\":\\"OR\\",\\"rules\\":[{\\"field\\":\\"Emp_ID\\",\\"op\\":\\"cn\\",\\"data\\":\\"ASAS\\"},{\\"field\\":\\"Name\\",\\"op\\":\\"cn\\",\\"data\\":\\"ASAS\\"},{\\"field\\":\\"Designation\\",\\"op\\":\\"cn\\",\\"data\\":\\"ASAS\\"},{\\"field\\":\\"City\\",\\"op\\":\\"cn\\",\\"data\\":\\"ASAS\\"},{\\"field\\":\\"State\\",\\"op\\":\\"cn\\",\\"data\\":\\"ASAS\\"},{\\"field\\":\\"Country\\",\\"op\\":\\"cn\\",\\"data\\":\\"ASAS\\"}]}\"}";
dynamic jObj = JObject.Parse(obj);
var data = JObject.Parse(jObj.filters.Value);
var test = data.rules;
Console.WriteLine(data);
Console.ReadLine();
我正在尝试解析 Json 字符串并收集其中存在的数组值。
{"_search":true,"nd":1492064211841,"rows":30,"page":1,"sidx":"","sord":"asc","filters":"{\"groupOp\":\"OR\",\"rules\":[{\"field\":\"Emp_ID\",\"op\":\"cn\",\"data\":\"ASAS\"},{\"field\":\"Name\",\"op\":\"cn\",\"data\":\"ASAS\"},{\"field\":\"Designation\",\"op\":\"cn\",\"data\":\"ASAS\"},{\"field\":\"City\",\"op\":\"cn\",\"data\":\"ASAS\"},{\"field\":\"State\",\"op\":\"cn\",\"data\":\"ASAS\"},{\"field\":\"Country\",\"op\":\"cn\",\"data\":\"ASAS\"}]}"}
PS: Above string is coming from jqGrid Ajax to the WebMethod in C#.
我没有成功获取 filters->rules[0]->data
我试过的:
dynamic jObj = JObject.Parse(postData);
var data = jObj.filters.rules[0].data;
出现错误:'Newtonsoft.Json.Linq.JValue' 不包含 'rules' 的定义。
dynamic jObj = JObject.Parse(postData);
var filters = jObj.filters; //Sucess: getting filters here
var rules1 = filters["rules"]; //Error: 'Newtonsoft.Json.Linq.JValue' does not contain a definition for 'rules'.
var rules2 = filters.rules; //Error: 'Newtonsoft.Json.Linq.JValue' does not contain a definition for 'rules'.
如何在 filters->rules AND filters->rules[0]->data 中获取值?
我不了解 C#,但我在 JavaScript
上尝试过在您的 json 中,过滤器字段不正确 json 它是字符串
我已经在 javascript 上做了这个,可能对你有帮助
var a = {"_search":true,"nd":1492064211841,"rows":30,"page":1,"sidx":"","sord":"asc","filters":"{\"groupOp\":\"OR\",\"rules\":[{\"field\":\"Emp_ID\",\"op\":\"cn\",\"data\":\"ASAS\"},{\"field\":\"Name\",\"op\":\"cn\",\"data\":\"ASAS\"},{\"field\":\"Designation\",\"op\":\"cn\",\"data\":\"ASAS\"},{\"field\":\"City\",\"op\":\"cn\",\"data\":\"ASAS\"},{\"field\":\"State\",\"op\":\"cn\",\"data\":\"ASAS\"},{\"field\":\"Country\",\"op\":\"cn\",\"data\":\"ASAS\"}]}"}
console.log(a.filters)
是returns
"{"groupOp":"OR","rules":[{"field":"Emp_ID","op":"cn","data":"ASAS"},{"field":"Name","op":"cn","data":"ASAS"},{"field":"Designation","op":"cn","data":"ASAS"}
它是字符串,现在我再次在 JSON
上解析它b = JSON.parse(a.filters)
console.log(b.rules)
现在它returns 统治对象
您必须像这样解析内部对象:
var obj = "{\"_search\":true,\"nd\":1492064211841,\"rows\":30,\"page\":1,\"sidx\":\"\",\"sord\":\"asc\",\"filters\":\"{\\"groupOp\\":\\"OR\\",\\"rules\\":[{\\"field\\":\\"Emp_ID\\",\\"op\\":\\"cn\\",\\"data\\":\\"ASAS\\"},{\\"field\\":\\"Name\\",\\"op\\":\\"cn\\",\\"data\\":\\"ASAS\\"},{\\"field\\":\\"Designation\\",\\"op\\":\\"cn\\",\\"data\\":\\"ASAS\\"},{\\"field\\":\\"City\\",\\"op\\":\\"cn\\",\\"data\\":\\"ASAS\\"},{\\"field\\":\\"State\\",\\"op\\":\\"cn\\",\\"data\\":\\"ASAS\\"},{\\"field\\":\\"Country\\",\\"op\\":\\"cn\\",\\"data\\":\\"ASAS\\"}]}\"}";
dynamic jObj = JObject.Parse(obj);
var data = JObject.Parse(jObj.filters.Value);
var test = data.rules;
Console.WriteLine(data);
Console.ReadLine();