【问题标题】:How to deseralize json object that contains multidimensional array?如何反序列化包含多维数组的json对象?
【发布时间】: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; }
}

【问题讨论】:

    标签: c# javascript .net json


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2015-06-11
      • 1970-01-01
      • 1970-01-01
      • 2022-08-17
      • 2016-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多