簡體   English   中英

在C#中使用嵌套數組反序列化JSON時遇到麻煩

[英]Having Trouble in Deserializing JSON with nested arrays in C#

我在這里嘗試反序列化此JSON時遇到了麻煩:

{
  "CstCmpCode": "AH01",
  "Loaded_date": "13-Aug-2016",
  "Main_Group": "Neck Wraps",
  "sub_group": [
    {
      "Sub_Group": "AFGHANI",
      "ClosBal": 7
    },
    {
      "Sub_Group": "AFGHANI",
      "ClosBal": 13
    },
    {
      "Sub_Group": "AFGHANI",
      "ClosBal": -15
    }
  ]
}

我為此創建的代碼或類是:

public void TempStock(string CstCmpCode)
{
    try
    {
        System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();

        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["TallyWeb"].ToString());
        SqlCommand cmd = new SqlCommand();
        cmd.CommandText = "select CstCmpCode, Loaded_date, Main_Group, Sub_Group, ClosBal from TlyStkSumm where CstCmpCode = @CstCmpCode";
        cmd.Parameters.AddWithValue("@CstCmpCode", CstCmpCode);
        DataSet ds = new DataSet();
        DataTable dt = new DataTable();
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        da.SelectCommand.Connection = con;
        da.Fill(dt);
        con.Close();

        List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
        Dictionary<string, object> row = null;
        foreach (DataRow rs in dt.Rows)
        {
            row = new Dictionary<string, object>();
            foreach (DataColumn col in dt.Columns)
            {
                row.Add(col.ColumnName, rs[col]);
            }
            rows.Add(row);
        }

        this.Context.Response.ContentType = "application/json; charset=utf-8";
        //this.Context.Response.Write(serializer.Serialize(rows));
        string json;
        json = JsonConvert.SerializeObject(rows);
        //////JsonTest jobj2 = JsonConvert.DeserializeObject<JsonTest>(json);
        ////var objResponse1 = JsonConvert.DeserializeObject<List<JsonTest>>(json);
        //JavaScriptSerializer oJS = new JavaScriptSerializer();
        //////testobject objtec = new testobject();
        ////objtec = oJS.Deserialize<testobject>(json);
        ////objtec = oJS.Deserialize<List<testobject>>(json);
        ////var s = new JavaScriptSerializer();
        ////var t = s.Deserialize<List<JsonTest>>(json);
        //var jobj2 = new JavaScriptSerializer().Deserialize<List<JsonTest>>(json);
        //var test = JsonConvert.DeserializeObject<List<JsonTest>>(json);
        var myObj = JsonConvert.DeserializeObject<List<MyClass>>(json);
        //MyClass c = serializer.Deserialize<MyClass>(json);
    }
    catch (Exception ex)
    {
        System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();

        this.Context.Response.ContentType = "application/json; charset=utf-8";
        this.Context.Response.Write(serializer.Serialize(ex.Message));
    }
}

public class JsonTest
    {
        public string CstCmpCode { get; set; }
        public string Loaded_date { get; set; }
        public string Main_Group { get; set; }
        //public sub_group[] s;
        public List<sub_group> sub { get; set; }
    }
 public class sub_group
    {
        public string Sub_Group { get; set; }
        //public string ClosBal { get; set; }
    }

告訴我我要去哪里錯了

將Newtonsoft.Json nuget包下載到您的項目中並使用此代碼

這是你的模特

public class MyClass
{
    public string CstCmpCode { get; set; }
    public string Loaded_date { get; set; }
    public string Main_Group { get; set; }
    public Result[] results { get; set; }
}

public class Result
{
    public string Sub_Group { get; set; }
    public int ClosBal { get; set; }
}

您可以像這樣反序列化您的字符串

var myObj= JsonConvert.DeserializeObject<MyClass>(json)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM