Я использую плагин JQuery, который позволяет моим пользователям создавать формы. Конструкция сохраняется в виде строки JSON в базе данных. Это JSON строка в следующем формате:Невозможно десериализовать строку JSON, сгенерированную плагином JQuery
{
"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 в этом формате, но в том формате, о котором я упоминал ранее.
Скажите, пожалуйста, как я могу преобразовать его в действительный десериализуемый формат?
Вы field_options в виде списка. Это не. Это единственный объект. [] Будет означать, что это массив. Так как это не так, это единственный объект. – dman2306
@ dman2306 большое спасибо. Это сработало. Добавьте его в качестве ответа. Я отметю его. :) –