[英]C# .net deserializing JSON
我正在尝试在我的对象中反序列化 JSON:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
public class FormData
{
public string audience { get; set; }
public Calendar[] calendar { get; set; }
public FormData()
{
//
// TODO: Add constructor logic here
//
}
public class Calendar
{
public Quarter quarter { get; set; }
}
public class Quarter
{
public int qtrNumber { get; set; }
public string qtrString { get; set; }
public int[] qtrTools { get; set; }
public int qtrYear { get; set; }
}
}
这是我的处理程序:
<%@ WebHandler Language="C#" Class="ToolHandler" %>
using System;
using System.Web;
using System.Web.Script.Serialization;
using System.Text;
using System.IO;
public class ToolHandler : IHttpHandler {
public void ProcessRequest(HttpContext context)
{
HttpRequest Request = context.Request;
HttpResponse Response = context.Response;
JavaScriptSerializer serializer = new JavaScriptSerializer();
Response.ContentType = "text/plain";
try
{
string strJson = new StreamReader(Request.InputStream).ReadToEnd();
//deserialize the object
FormData formData = serializer.Deserialize<FormData>(strJson);
if (formData != null)
{
Response.Write("Success!!");
}
else
{
Response.Write("No Data");
}
}
catch (Exception ex)
{
Response.Write("Error :" + ex.Message);
}
}
public bool IsReusable {
get {
return false;
}
}
}
JSON:
{
"audience": "8",
"calendar": [
{
"qtrNumber": 1,
"qtrYear": 2016,
"qtrString": "1st Quarter",
"qtrTools": [
"3",
"4"
]
},
{
"qtrNumber": 2,
"qtrYear": 2016,
"qtrString": "2nd Quarter",
"qtrTools": []
},
{
"qtrNumber": 3,
"qtrYear": 2016,
"qtrString": "3rd Quarter",
"qtrTools": []
},
{
"qtrNumber": 4,
"qtrYear": 2016,
"qtrString": "4th Quarter",
"qtrTools": []
}
]
}
执行此行后我看到的内容:
FormData formData = serializer.Deserialize<FormData>(strJson);
formData 对象具有包含 4 个元素的数组的适当受众和日历,但所有 calendar[].quarter 对象都为 null。 请帮忙 ))
Calendar
类在 JSON 中没有嵌套的Quarter
属性。 您可以“取消嵌套”嵌套属性,一切都应该正常工作:
public class FormData
{
public string audience { get; set; }
public Calendar[] calendar { get; set; }
public FormData()
{
//
// TODO: Add constructor logic here
//
}
public class Calendar
{
public int qtrNumber { get; set; }
public string qtrString { get; set; }
public int[] qtrTools { get; set; }
public int qtrYear { get; set; }
}
}
“qtr”属性都没有在calendar
,它们在Quarter
。 您的 JSON 必须是:
{
"audience": "8",
"calendar": [ {"Quarter" :
{
"qtrNumber": 1,
"qtrYear": 2016,
"qtrString": "1st Quarter",
"qtrTools": [
"3",
"4"
]
}},
{"Quarter" : {
"qtrNumber": 2,
"qtrYear": 2016,
"qtrString": "2nd Quarter",
"qtrTools": []
}},
etc...
]
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.