简体   繁体   English

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

[英]How to convert a dynamic object to JSON string c#?

I have the following dynamic object that I'm getting from a third party library: 我具有从第三方库获取的以下动态对象:

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;

I need to parse it to a JSON string. 我需要将其解析为JSON字符串。

I tried this (using JSON.net): 我尝试了这个(使用JSON.net):

string jsonString = JsonConvert.SerializeObject(requirements);
return jsonString;

But I get a seemingly corrupted JSON string, as below: 但我得到一个看似损坏的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”:“ 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”}]

The object contains multiple properties, and not just the 'id'. 该对象包含多个属性,而不仅仅是“ id”。

Any advice? 有什么建议吗?

Have you tried using var instead of dynamic ? 您是否尝试使用var而不是dynamic

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

When you only want to deserialize requirements without doing anything else with it then there is no need to use it dynamic ally. 当您只想反序列化requirements而又不做任何其他事情时,则无需dynamic地使用它。

Try using Convert.ToString() as following code to convert 'dynamic' object to 'string' - 尝试使用Convert.ToString()作为以下代码将“动态”对象转换为“字符串”-

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM