让我们说我已经设置了这样的东西:
narudzbe.aspx.cs
a
narudzbe.aspx - javascript
[WebMethod]
public static string getAllPartnere(int kid)
{
string json = string.Empty;
List<stp_WEB_MP_PARTNERI_GetPartneriDDList_Result> partnerList = new List<stp_WEB_MP_PARTNERI_GetPartneriDDList_Result>();
partnerList = DANarudzbe.GetPartnerList(kid);
json = JsonConvert.SerializeObject(partnerList, new Newtonsoft.Json.Converters.StringEnumConverter());
return json;
}
narudzbe.aspx - html
$.ajax({
type: "POST",
url: "/Narudzbe/narudzbe.aspx/getAllPartnere",
data: '{kid:"' + Partner_ID + '"}',
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (msg) {
$('#partneri').DataTable({
data: msg.d,
columns: [
{ title: "PartnerID" },
{ title: "Naziv" }
]
});
}
});
我需要知道如何使用json.net序列化通用列表,以便所有值都用引号括起来,以便返回的列表被序列化,以便数据表能够读取它。
序列化列表在像我这样序列化时没有引号中的数值,因此数据表获得了一些&#34;引号被认为是值。
我还需要说明这是我第一次使用数据表而不是开发人员,所以请放轻松。
说实话,我也想知道这是否是在使用ajax和服务器处理的数据表中使用的正确方法,或者是否更简单,更简单。
答案 0 :(得分:1)
我认为您的数值没有问题,因为它们是正确序列化的,因为它们是数值,这是默认行为。您可以在this jsfiddle中检查它是否没有问题 检查前十行,只有整数值,显示正确。
然而,要回答你的问题。 没有转换器或其他一些简单的方法来说json.net如何将你的数字转换成字符串(就像日期一样,或者像你自己的例子那样枚举)。 您必须编写自己的转换器,如here所示。 但这看起来像是开销。
如果您的原始类不是那么大,我会创建一个包含所有字符串属性的副本。
public class SerializablePartner
{
public string PartnerId { get; set; }
public string Naziv { get; set; }
// your other properties
public SerializablePartner(stp_WEB_MP_PARTNERI_GetPartneriDDList_Result originalItem)
{
// map your values here
this.PartnerId = originalItem.PartnerId.ToString();
this.Naziv = originalItem.Naziv; // already a string, no need for change
// your other properties
}
}
这样你的所有属性肯定都用双引号括起来,就像json.net一样,它们都是字符串。 当然还有你的原创 的伙伴名单强> 必须转换为List&lt; SerializablePartnerList&gt;在进行json转换之前。 像这样:
return JsonConvert.SerializeObject(partnerList.Select(partner => new SerializablePartner(partner)).ToList());