2016-08-13 81 views
0

遇到麻煩嘗試反序列化此JSON這裏:具有反序列化JSON嵌套陣列故障在C#

{ 
    "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; } 
    } 

PLS 。告訴我,我要去的地方錯誤的

+0

您可以直接從JSON構建類結構。請參閱我的回答http://stackoverflow.com/a/38161247/1744164 –

+0

您當前的代碼不在編譯。 MyClass在哪裏定義?請在內容和格式方面加倍努力。 –

+0

@SirRufo請。檢查TempStock(字符串CstCmpCode)Mehtod –

回答

0

下載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) 
+0

我已經添加了Newtonsoft.Json包.. –

+0

@YogeshSharma然後做休息:)你的模型格式是錯誤的,我沒有看到你所使用JsonConvert –

+0

PLS線。告訴我我要去哪裏? –