c# - 带有序列化对象键的对象作为对象

时间:2016-10-21 14:19:14

标签: javascript c# json serialization

目前在我们的项目中,我们有一个具有字符串描述的类 此外,我们有一个对象。

Object Foo { 
    Apple: {parts: 5},
    Description:  theproblematicobject,
    ,,,, 
}

描述设置为类型字符串。因此,需要将对象序列化以指定为描述的值。

最后我们将foo作为JSONConvert.serializer(foo)返回。 收到后,对象foo的格式很好JSON,但描述仍然是一个序列化的字符串。

是否有一些函数组合,我可以使用如何序列化有问题的对象(因此它适合字符串类型),并在请求反序列化时,它成为一个格式良好的json而不是。

结果

"Name": "Friday, 21 October 2016 New...",
  "Description": "{\"HoursList\":[],\"EmployeeFullname\":\"..........",
  "SwipeLeftAction": null,
  "SwipeLeftDescription": null,
  "SwipeLeftColor": null,
  "SwipeRightAction": null,
  "SwipeRightDescription": null,
  "SwipeRightColor": null,
  "ClickAction": "uiweb/em......."
}

渴望

"Name": "Friday, 21 October 2016 New...",
  "Description": {"HoursList":[],
                  "EmployeeFullname" : ".........."
                 }
  "SwipeLeftAction": null,
  "SwipeLeftDescription": null,
  "SwipeLeftColor": null,
  "SwipeRightAction": null,
  "SwipeRightDescription": null,
  "SwipeRightColor": null,
  "ClickAction": "uiweb/em......."
}

3 个答案:

答案 0 :(得分:0)

description的类型是一个字符串。您可以从JSON本身清楚地看到它。这意味着你从任何自动反序列化器中获取一个字符串。

如果你想要一个对象,请在描述字段中运行第二个JSON反序列化器。

答案 1 :(得分:-1)

可能你有任何格式化程序或其他逻辑错误的序列化。您使用的是哪个库版本?

最新的JsonConvert.SerializeObject效果很好。

这是一个小例子:

private class Foo
{
    public int Apple { get; set; }
    public Description Description { get; set; }
}

private class Description
{
    public int[] HoursList { get; set; }
}


var a = new Foo
{
    Apple = 1,
    Description = new Description
    {
        HoursList = new[] {1}
    }
};

var b = JsonConvert.SerializeObject(a);

结果是格式正确的json字符串:

{"Apple":1,"Description":{"HoursList":[1]}}

答案 2 :(得分:-1)

试试这个:

将有问题的对象序列化为XML字符串而不是JSON,如下所示: Serialize an object to XML

将XML转换为JSON,如下所示: How to convert JSON to XML or XML to JSON?