【发布时间】:2015-10-18 08:03:03
【问题描述】:
如何反序列化下面的 json 数组。无法获取 field_options 值和 field_options 数组。我正在使用 DataContractJsonSerializer 进行反序列化。 我需要获取 field_options 之类的大小,然后如果 field_type 是下拉列表,我将需要 field_options -> options -> lebel 和检查值以及 include_blank_option 的值。
string jsonString = @"[{""fields"":[{""label"":""Untitled"",""field_type"":""paragraph"",""required"":true,""field_options"":{""size"":""small""},""cid"":""c2""},{""label"":""Untitled"",""field_type"":""text"",""required"":true,""field_options"":{""size"":""small""},""cid"":""c6""},{""label"":""Untitled"",""field_type"":""dropdown"",""required"":true,""field_options"":{""options"":[{""label"":""kjhkjh"",""checked"":false},{""label"":"",hkjkhkj"",""checked"":false}],""include_blank_option"":true},""cid"":""c8""}]}]}";
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(List<field>));
MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
var obj = (List<field>)ser.ReadObject(stream);
foreach (Person sp in obj[0].fields)
{
Response.Write(sp.cid + sp.field_type + sp.label + sp.required + "<BR>");
List<sizee> si = sp.field_options;
foreach (sizee sz in si)
{
Response.Write(sz.size);
}
}
[DataContract]
class field
{
[DataMember]
public List<Person> fields { get; set; }
}
[DataContract]
class Person
{
[DataMember]
public string label { get; set; }
[DataMember]
public string field_type { get; set; }
[DataMember]
public string required { get; set; }
[DataMember]
public string cid { get; set; }
[DataMember]
public List<sizee> field_options { get; set; }
}
[DataContract]
class sizee
{
[DataMember]
public string size { get; set; }
[DataMember]
public List<option> size { get; set; }
}
[DataContract]
class option
{
[DataMember]
public string checke { get; set; }
[DataMember]
public string label { get; set; }
}
非常感谢。
【问题讨论】:
标签: c# json json.net jsonserializer