如何将动态对象转换为JSON字符串c#?

时间:2016-08-08 09:03:03

标签: c# json serialization

我从第三方库获得以下动态对象:

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'。

有什么建议吗?

2 个答案:

答案 0 :(得分:4)

您是否尝试过使用var代替dynamic

// Use "var" in the declaration below.
var requirements = order.Title.Commitments[0].Requirements;
string jsonString = JsonConvert.SerializeObject(requirements);

如果您只想反复排序requirements而不对其执行任何其他操作,则无需使用dynamic盟友。

答案 1 :(得分:1)

尝试使用Convert.ToString()作为以下代码,将“动态”对象转换为“字符串”-

dynamic order = (dynamic)orderFound;
dynamic requirements = order.Title.Commitments[0].Requirements;
string validString = Convert.ToString(requirements);