如何反序列化包含多维数组的json对象?
Posted
技术标签:
【中文标题】如何反序列化包含多维数组的json对象?【英文标题】:How to deseralize json object that contains multidimensional array? 【发布时间】:2012-11-08 07:36:49 【问题描述】:我需要一些关于将包含多维数组的 JSON 对象转换为我的类的帮助。我试图反序列化 json 对象但失败了。 JsonMaclar 类对象为空。请帮忙。
脚本代码;
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#代码;
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;
【问题讨论】:
【参考方案1】:我建议您使用JSON.NET。它是一个开源库,可将您的 c# 对象序列化和反序列化为 json 和 Json 对象为 .net 对象...
序列化示例:
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 – 多维数组支持,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
【讨论】:
以上是关于如何反序列化包含多维数组的json对象?的主要内容,如果未能解决你的问题,请参考以下文章