web-dev-qa-db-ja.com

JSON.NET JObject-このネストされたJSON構造から値を取得する方法

私はこの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"
    }
}

私はそれをJSON.NET JObjectにパースし、最初のレベルの値に正常にアクセスできます。 (文字列)RequestBody.SelectToken( "client_id")

「user_id」の値にアクセスするにはどうすればよいですかJPath式を使用して(またはJSON.NET JObjectの子オブジェクトにアクセスして)?これは機能しません:

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

jSONの「データ」部分を解析するためにこれを行うことはできません。

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

コンパイラがRequestBody.SelectToken( "data")をオブジェクトとして認識しているようです(「オブジェクトを文字列に解析できません」というエラーが表示されます)

そして、JSONをJObject(またはJSONを処理するための他のタイプの汎用オブジェクト)に一般的に解析できる必要があるソリューションを開発しているので、元のJSONをカスタムC#オブジェクトに解析したくないので、比較的一貫した方法で解析できます。

11
Chris Halcrow

JSONに配列がないため、SelectToken("data[0].user_id")は機能しません。代わりにSelectToken("data.user_id")を使用してください。

フィドル: https://dotnetfiddle.net/K0X4ht

8
Brian Rogers