我在这里尝试反序列化这个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; }
}
PLS。告诉我哪里出错了
答案 0 :(得分: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)