无法反序列化JQuery插件生成的JSON字符串
本文关键字:JSON 字符串 插件 反序列化 JQuery | 更新日期: 2023-09-27 18:07:04
我使用JQuery插件让我的用户设计表单。设计以JSON字符串的形式保存在数据库中。这个JSON字符串的格式如下:
{
"fields": [{
"label": "Untitled",
"field_type": "text",
"required": true,
"field_options": {
"save_to": "",
"size": "small",
"description": ""
},
"cid": "c5"
}]
}
下面是c#的类结构和代码,用来反序列化这个JSON字符串:
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,而是用我之前提到的格式。
请告诉我如何将其转换为有效的可反序列化格式?
根据你的json模型应该是:
public class FieldOptions
{
public string save_to { get; set; }
public string size { get; set; }
public string description { get; set; }
}
public class Field
{
public string label { get; set; }
public string field_type { get; set; }
public bool required { get; set; }
public FieldOptions field_options { get; set; }
public string cid { get; set; }
}
public class RootObject
{
public List<Field> fields { get; set; }
}
我使用这个在线工具http://json2csharp.com/生成它。
RootObject是你将用来反序列化
的类型使用,例如Json。,你的代码应该是
var myobj = JsonConvert.DeserializeObject<RootObject>(json);