web-dev-qa-db-fra.com

JSON.NET JObject - comment puis-je obtenir de la valeur de cette structure JSON imbriquée

J'ai ce JSON:

{
    "client_id": "26075235",
    "client_version": "1.0.0",
    "event": "app.uninstall",
    "timestamp": 1478741247,
    "data": {
        "user_id": "62581379",
        "site_id": "837771289247593785",
        "platform_app_id": "26075235"
    }
}

Je l'analyser dans un JObject JSON.NET et je peux accéder avec succès au premier niveau de valeurs en utilisant par exemple (chaîne) RequestBody.SelectToken ("client_id")

Comment accéder à la valeur de "user_id" en utilisant une expression JPath (ou en accédant à un objet enfant du JSON.NET JObject)? Cela ne fonctionne pas:

(string)RequestBody.SelectToken("data[0].user_id")

et je ne peux pas faire cela pour analyser la partie "données" du JSON:

JObject RequestBodyData =    JObject.Parse((string)RequestBody.SelectToken("data"));

car le compilateur semble reconnaître RequestBody.SelectToken ("data") comme un objet (j'obtiens l'erreur 'Can not parse object into string')

et je ne veux pas analyser le JSON d'origine dans un objet C # personnalisé car je développe une solution qui doit être capable d'analyser génériquement JSON dans un JObject (ou tout autre type d'objet générique pour gérer le JSON), donc il peut être analysé d'une manière relativement cohérente.

11
Chris Halcrow

SelectToken("data[0].user_id") ne fonctionne pas car il n'y a pas de tableau dans votre JSON. Vous devez utiliser SelectToken("data.user_id") à la place.

Violon: https://dotnetfiddle.net/K0X4ht

8
Brian Rogers