25

私はこの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に解析し、例えばを使用して最初のレベルの値に正常にアクセスできます(string)RequestBody.SelectToken("client_id")

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

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

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

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

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

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

4

1 に答える 1

30

SelectToken("data[0].user_id")JSON に配列がないため、機能しません。SelectToken("data.user_id")代わりに使用する必要があります。

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

于 2016-11-10T22:41:45.560 に答える