获取jqGrid ajax在C#中嵌套JSON字符串的数组由Newtonsoft Json
我想解析Json字符串并收集其中存在的数组值。获取jqGrid ajax在C#中嵌套JSON字符串的数组由Newtonsoft 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#.
我不是在得到越来越成功过滤器 - >规则[0] - >数据
我已经试过:
dynamic jObj = JObject.Parse(postData);
var data = jObj.filters.rules[0].data;
出现错误:“Newtonsoft.Json.Linq.JValue”不包含“规则”的定义。
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'.
如何获得内部值过滤器 - >规则和过滤器 - >规则[0] - >数据?
必须解析内部对象是这样的:
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();
太棒了。非常感谢! –
我很高兴帮助。祝你有美好的一天 ! –
我没有关于C#的知识,但我试图把它的JavaScript
在你的JSON,在过滤器领域不正确is'nt 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)
是回报
"{"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)
现在它返回规则对象
JSON字符串来自jqGrid,我没有做任何修改与字符串发送到C#之前。所以字符串格式应该是正确的。过滤器字段中有哪些错误?过滤器字段我能够得到(正如我在主要话题中所说的)。其实我无法获得“规则”字段。 –
你肯定'postData'有字符串类型,因此'JObject.Parse(postData)'是必需的?如果你真的需要制作'JObject.Parse(postData)',那么你仍然需要**秒解析'动态过滤器= JObject.Parse(jObj.filters);'而不是'var filters = jObj.filters; ' – Oleg
谢谢奥列格! :) –
不客气! – Oleg