javascript 如何反序列化包含多维数组的 json 对象?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/13469765/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to deseralize json object that contains multidimensional array?
提问by Talha
I need some help about converting JSON object that contains multidimensional array to my class. I tried to deserialize the json object but failed. JsonMaclar class object is null. Please help.
我需要一些关于将包含多维数组的 JSON 对象转换为我的类的帮助。我试图反序列化 json 对象但失败了。JsonMaclar 类对象为空。请帮忙。
The script code;
脚本代码;
var allFields = new Array();
allFields.push({
BirinciKatilimciId: birinciKatilimciId.val(),
IkinciKatilimciId: ikinciKatilimciId.val(),
BirincininSkoru: birincininSkoru.val(),
IkincininSkoru: ikincininSkoru.val(),
MacSayisi: macSayisi.val(),
MacSuresi: macinSuresi.val(),
MacinOynanmaSaati: macinOynanmaSaati.val(),
Hukmen: hukmen.is(':checked'),
RatingeDahil: ratingeDahil.is(':checked'),
MaclarTablosundaGoster: maclarTablosundaGoster.is(':checked'),
MacinTarihi: macinTarihi.val()
});
$("#<%=btnMaclariKaydet.ClientID %>").click(function () {
var jsonText = JSON.stringify({
arrayAllMaclar: allFields
});
$('#<%= hfMaclar.ClientID %>').val(jsonText);
});
c# code;
c#代码;
protected void btnMaclariKaydet_Click(object sender, EventArgs e)
{
JavaScriptSerializer ser = new JavaScriptSerializer();
JsonMaclar turnuvaMaclar = ser.Deserialize<JsonMaclar>(hfMaclar.Value);
}
public class JsonMaclar {
List<JsonMac> arrayAllMaclar { get; set; }
}
public class JsonMac {
String BirinciKatilimciId { get; set; }
String IkinciKatilimciId { get; set; }
String BirincininSkoru { get; set; }
String IkincininSkoru { get; set; }
String MacSayisi { get; set; }
String MacSuresi { get; set; }
String MacinOynanmaSaati { get; set; }
String Hukmen { get; set; }
String RatingeDahil { get; set; }
String MaclarTablosundaGoster { get; set; }
String MacinTarihi { get; set; }
}
回答by Talha
I recommend you to use JSON.NET. it is an open source library to serialize and deserialize your c# objects into json and Json objects into .net objects ...
我建议您使用JSON.NET。它是一个开源库,用于将 c# 对象序列化和反序列化为 json,将 Json 对象序列化和反序列化为 .net 对象......
Serialization Example:
序列化示例:
Product product = new Product();
product.Name = "Apple";
product.Expiry = new DateTime(2008, 12, 28);
product.Price = 3.99M;
product.Sizes = new string[] { "Small", "Medium", "Large" };
string json = JsonConvert.SerializeObject(product);
//{
// "Name": "Apple",
// "Expiry": new Date(1230422400000),
// "Price": 3.99,
// "Sizes": [
// "Small",
// "Medium",
// "Large"
// ]
//}
Product deserializedProduct = JsonConvert.DeserializeObject<Product>(json);
Json.NET 4.5 Release 8– Multidimensional Array Support, Unicode Improvements Json.NET now supports serializing and deserializing multidimensional arrays. There isn't anything you need to do, if one of your types has a multidimensional array property It Just Works?.
Json.NET 4.5 Release 8– 多维数组支持,Unicode 改进 Json.NET 现在支持序列化和反序列化多维数组。如果您的类型之一具有多维数组属性 It Just Works?,则无需执行任何操作。
string[,] famousCouples = new string[,]
{
{ "Adam", "Eve" },
{ "Bonnie", "Clyde" },
{ "Donald", "Daisy" },
{ "Han", "Leia" }
};
string json = JsonConvert.SerializeObject(famousCouples, Formatting.Indented);
// [
// ["Adam", "Eve"],
// ["Bonnie", "Clyde"],
// ["Donald", "Daisy"],
// ["Han", "Leia"]
// ]
string[,] deserialized = JsonConvert.DeserializeObject<string[,]>(json);
Console.WriteLine(deserialized[3, 0] + ", " + deserialized[3, 1]);
// Han, Leia