【问题标题】:Deserialize complex object反序列化复杂对象
【发布时间】:2014-06-04 18:43:53
【问题描述】:

我正在尝试反序列化浏览器发送的对象。我的对象是以名称为键的 Detail 数组。名称是字符串,详细信息是具有属性的对象。

这是 javascript 对象的图片:

这是我收到的 JSON 字符串,使用“JSON.stringify(TemplateDetails)”创建:

"{\"UDF1-0-div\":{\"UDFtitle\":\"theTitle\",\"DDLType\":\"STRING\",\"defaultValue\":\"defVal\",\"minLength\":\"1\",\"maxLength\":\"6\",\"decimals\":\"\",\"DDLTable\":\"\",\"DDLFilter\":\"\",\"DDLAction\":\"TEST\",\"DDLfontfamily\":\"Verdana\",\"DDLSize\":\"12px\",\"DDLTextAlignment\":\"left\",\"colorTitle\":\"#FFFFFF\",\"colorText\":\"#FFFFFF\"}}"

我想在 c# 代码中重新创建对象。

【问题讨论】:

  • 您的 Json 字符串无效,请参阅 json2csharp.com 它不应包含转义,例如,您需要先修复您的 json,然后才能做很多事情

标签: c# json serialization deserialization


【解决方案1】:

首先你应该创建一个包含你需要的所有属性的类:

   public class MyClass
    {
    public string DDLAction{ get; set; }
    public string DDLFilter{ get; set; }
    public string DDLSize{ get; set; }

    // put all of your attributes
    //...
    }

对于反序列化:

System.Web.Script.Serialization.JavaScriptSerializer ser = new System.Web.Script.Serialization.JavaScriptSerializer();
            MyClass Obj = ser.Deserialize<MyClass>(input);

【讨论】:

  • var models = new JavaScriptSerializer().Deserialize(data);
【解决方案2】:

那不是字典,字典长这样:

{
    "objName": {
        ["title", "thetitle"], 
        ["DDLType":"STRING"], 
        ["defaultValue": "defVal"]
    }
}

你有一个普通的对象,必须这样创建它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-01
    • 2021-09-23
    相关资源
    最近更新 更多