具有反序列化JSON嵌套阵列故障在C#
问题描述:
遇到麻烦尝试反序列化此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 。告诉我,我要去的地方错误的
答
下载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线。告诉我我要去哪里? –
您可以直接从JSON构建类结构。请参阅我的回答http://*.com/a/38161247/1744164 –
您当前的代码不在编译。 MyClass在哪里定义?请在内容和格式方面加倍努力。 –
@SirRufo请。检查TempStock(字符串CstCmpCode)Mehtod –