【发布时间】:2015-08-08 15:39:20
【问题描述】:
我使用了一个让我的用户能够设计表单的 JQuery 插件。该设计以 JSON 字符串的形式保存在数据库中。此 JSON 字符串采用以下格式:
{
"fields": [{
"label": "Untitled",
"field_type": "text",
"required": true,
"field_options": {
"save_to": "",
"size": "small",
"description": ""
},
"cid": "c5"
}]
}
以下是用于反序列化此 JSON 字符串的 C# 类结构和代码:
public class Options {
public string label {
get;
set;
}
public bool Checked {
get;
set;
}
}
public class FieldOption {
public string save_to {
get;
set;
}
public string description {
get;
set;
}
public object options {
get;
set;
}
public bool include_other_option {
get;
set;
}
public string size {
get;
set;
}
}
public class DesignField {
public string label {
get;
set;
}
public string field_type {
get;
set;
}
public bool required {
get;
set;
}
public string cid {
get;
set;
}
public List < FieldOption > field_options {
get;
set;
}
}
public class Design {
public List < DesignField > fields {
get;
set;
}
}
public partial class FormDesign: System.Web.UI.UserControl {
List < DesignField > FormFields;
public string FormDesignData {
get;
set;
}
protected void Page_Load(object sender, EventArgs e) {
Design res = JsonHelper.JsonDeserialize < Design > (FormDesignData);
}
}
这里给出了 JSON Helper 类:http://www.codeproject.com/Articles/272335/JSON-Serialization-and-Deserialization-in-ASP-NET
问题在于,当内部 JSON 对象用 [] 括起来时,它正在反序列化,例如:
"field_options":[{
"save_to": "",
"size": "small",
"description": ""
}]
但该插件不是以该格式导出 JSON,而是以我之前提到的格式导出。
请告诉我如何将其转换为有效的可反序列化格式?
【问题讨论】:
-
您将 field_options 作为列表。它不是。这是一个单一的对象。 [] 表示它是一个数组。由于它没有那个,它是一个单一的对象。
-
@dman2306 非常感谢。有效。添加它作为答案我会标记它。 :)
标签: javascript c# jquery json serialization