2016-08-13 77 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线。告诉我我要去哪里? –