从 .NET 到 jqGrid 的 JSON 数据出现问题
本文关键字:数据 问题 JSON NET jqGrid | 更新日期: 2023-09-27 18:34:51
我有一个动态函数来生成表数据到 JSON 有点工作,现在我尝试将其添加到 .NET 中的列表中,但是过去几天我无法做到这一点,有人知道我做错了什么吗?
输出如下所示:
[{"itemsSerialized":"{''"id''":1,''"name''":''"Medical 1",''"city''":''"Kiev''",''"instituteTypeId''":0}"},{"itemsSerialized":"{''"id''":2,''"name''":''"Medical 2''",''"city''":''"Kherson''",''"instituteTypeId''":0}"}]
应该没有"itemsSerialized":",我明白它来自哪里,但不明白为什么对象声明突然出现在我的 JSON 字符串中
我的 C# 代码:
Object itemsSerialized = "";
foreach (DataRow r in _data.Rows)
{
DynamicClass dynamicClass = new DynamicClass();
dyna.ConvertRowToCustomer(r, out dynamicClass);
DynamicClassList.Add(dynamicClass);
var iSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
itemsSerialized = JsonConvert.SerializeObject(dynamicClass.Property.properties);
Object itemsSerialized2 = JsonConvert.DeserializeObject(xJSON);
Gridist.Add(new { itemsSerialized });
}
使用jQuery,我有这个将数据加载到jQGrid中:
$.ajax({
type: "POST",
contentType: "application/json",
url: "dataServices/objects.asmx/InvokeData",
data: "{ 'q': 'med&1'}",
dataType: 'json',
success: function (result) {
var str = result.d;
alert(result.d);
$("#jqGrid_2")[0].addJSONData(result.d);
}
});
我现在的回报是:
{"id":1,"name":"Medical 1","city":"Kiev","instituteTypeId":0},{"id":2,"name":"Medical 2","city":"Kherson","instituteTypeId":0}
更新内部 AJAX 版本:
mtype: 'POST',
contentType: "application/json",
url: "dataServices/objects.asmx/InvokeData",
ajaxGridOptions: {
contentType: 'application/json; charset=utf-8'
},
postData: JSON.stringify({q: "med&1"}),
loadonce: true,
dataType: 'json',
jsonReader: {
root: function (obj) {
alert(obj.d);
return obj.d;
},
page: "",
total: "",
records: function (obj) {
return obj.d.length;
},
},
gridview: true,
loadError: function (xhr, status, error) {
alert('load error: ' + error);
},
并且正在从第一行也是最后一行的第一列中被写掉......
我做错了什么以及如何获取项目序列化
首先是服务器响应
{
"id": 1,
"name": "Medical 1",
"city": "Kiev",
"instituteTypeId": 0
},
{
"id": 2,
"name": "Medical 2",
"city": "Kherson",
"instituteTypeId": 0
}
是错误的。正确的数据应该是项目数组,例如
[
{
"id": 1,
"name": "Medical 1",
"city": "Kiev",
"instituteTypeId": 0
},
{
"id": 2,
"name": "Medical 2",
"city": "Kherson",
"instituteTypeId": 0
}
]
您发布的另一个 JSON 响应包含两个问题。 1( "itemsSerialized":"
前缀 2( 所有项目的值都是字符串
[
{
"itemsSerialized": "{'"id'":1,'"name'":'"Medical 1'",'"city'":'"Kiev'",'"instituteTypeId'":0}"
},
{
"itemsSerialized": "{'"id'":2,'"name'":'"Medical 2'",'"city'":'"Kherson'",'"instituteTypeId'":0}"
}
]
第一个问题的原因是使用
Gridist.Add(new { itemsSerialized });
而不是
Gridist.Add(itemsSerialized);
第二个问题的原因是不需要使用JsonConvert.SerializeObject
。你应该做的是这样的
Gridist.Add(dynamicClass.Property.properties);
而不是
itemsSerialized = JsonConvert.SerializeObject(dynamicClass.Property.properties);
Gridist.Add(new { itemsSerialized });