web-dev-qa-db-fra.com

Comment convertir un objet dynamique en chaîne JSON c #?

J'ai l'objet dynamique suivant que je reçois d'une bibliothèque tierce:

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;

Je dois l’analyser dans une chaîne JSON.

J'ai essayé ceci (en utilisant JSON.net):

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

Mais je reçois une chaîne JSON apparemment corrompue, comme ci-dessous:

[{"$ 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"}]

L'objet contient plusieurs propriétés, et pas seulement le "id".

Aucun conseil?

5
user3378165

Avez-vous essayé d'utiliser var au lieu de dynamic?

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

Lorsque vous voulez seulement désérialiser requirements sans rien faire d’autre, il n’est pas nécessaire de l’utiliser dynamically.

4

Essayez d’utiliser Convert.ToString () comme code suivant pour convertir un objet 'dynamic' en 'chaîne' -

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