【发布时间】:2016-08-08 09:03:03
【问题描述】:
我有以下从第三方库获取的动态对象:
IOrderStore os = ss.GetService<IOrderStore>();
IOrderInfo search = os.Orders.Where(t => t.Number == "test").FirstOrDefault();
IOrder orderFound = os.OpenOrder(search, true);
dynamic order = (dynamic)orderFound;
dynamic requirements = order.Title.Commitments[0].Requirements;
我需要将其解析为 JSON 字符串。
我试过这个(使用 JSON.net):
string jsonString = JsonConvert.SerializeObject(requirements);
return jsonString;
但我得到一个看似损坏的 JSON 字符串,如下所示:
[{"$id":"1"},{"$id":"2"},{"$id":"3"},{"$id":"4"},{" $id":"5"},{"$id":"6"},{"$id":"7"},{"$id":"8"},{"$id":"9 "},{"$id":"10"},{"$id":"11"},{"$id":"12"},{"$id":"13"},{"$ id":"14"},{"$id":"15"}]
对象包含多个属性,而不仅仅是“id”。
有什么建议吗?
【问题讨论】:
-
显示您要转换的对象
-
'string json = Newtonsoft.Json.JsonConvert.SerializeObject(foo);'
-
@user3378165 - 是的,请展示
Requirements的创建方式,因为当只是简单地测试动态对象列表并且每个对象都有几个字段时,它们都被序列化了 -
您正在尝试做的事情看起来完全正确。见this working example。我们需要查看
Requirements属性的声明/定义以便为您提供帮助。 -
@user3378165,抱歉,您的修改没有帮助。
Console.WriteLine(order.Title.Commitments[0].Requirements.GetType());打印什么?请给我们看那个字符串。此外,您一直说您正在使用第三方库。哪个图书馆?有可用的文档吗?最重要的是:你怎么知道返回的 JSON 是“损坏的”,正如你所说的那样?你的参考是什么?您究竟希望看到什么?
标签: c# json serialization