4

JSONデータがあります:

var decodedJson =
"{{
  "user": {
    "userId": "sid:C4F4E93856104F078A11FE95892F0158"
  },
  "authenticationToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmdWxscm93IjoiYWxsIiwiRGJnMiI6ImxvZ2luIiwidmVyIjoiMyIsInVpZCI6InNpZDpDNEY0RTkzODU2MTA0RjA3OEExMUZFOTU4OTJGMDE1OCIsImlzcyI6InVybjptaWNyb3NvZnQ6d2luZG93cy1henVyZTp6dW1vIiwiYXVkIjoidXJuOm1pY3Jvc29mdDp3aW5kb3dzLWF6dXJlOnp1bW8iLCJleHAiOjE0NDk3NTYzNzIsIm5iZiI6MTQ0NzE2NDM3Mn0.kc-0O_aorfTw9l9U6yY6wyVtQnckqNBJikBzxAcJZ_U"
}}";

次に、JSON.NET を使用して動的にデシリアライズします。

var result = JsonConvert.DeserializeObject<dynamic>(decodedJson);

次に、次のように UserId と Token を抽出することを期待しています。

string userId = result.user.userId;
string userToken = result.authenticationToken;

しかし、それは言っています

「不明なメンバー user/authenticationToken」

何か案は?


更新しました:

間違った json データをコピーしました。実際には次のようになります。

{\"user\":{\"userId\":\"sid:C4F4E93856104F078A11FE95892F0158\"},\"authenticationToken\":\"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmdWxscm93IjoiYWxsIiwiRGJnMiI6ImxvZ2luIiwidmVyIjoiMyIsInVpZCI6InNpZDpDNEY0RTkzODU2MTA0RjA3OEExMUZFOTU4OTJGMDE1OCIsImlzcyI6InVybjptaWNyb3NvZnQ6d2luZG93cy1henVyZTp6dW1vIiwiYXVkIjoidXJuOm1pY3Jvc29mdDp3aW5kb3dzLWF6dXJlOnp1bW8iLCJleHAiOjE0NDk3NjE1NDEsIm5iZiI6MTQ0NzE2OTU0MX0.oVH8R2134UQQDpXfzPv2mmrj7M05w2mzWtbp70i7GEU\"}
4

3 に答える 3

1

1つの方法は、このように使用することLinq-to-JSONですJson.NET

var jsonString = File.ReadAllText(@"C:\YourDirectory\user.json");
var jObjet = JObject.Parse(jsonString);

string userId = (string)jObjet["user"]["userId"];
string userToken = (string)jObjet["authenticationToken"];

オブジェクト構造が将来変更された場合は、新しいstringタグ名をパラメーターとしてメソッドに渡すことができます。

注:構造が正しくあり ません。オブジェクトの周りにJSON余分な中かっこがあります。{}

于 2015-11-10T14:30:27.133 に答える
1

JSON 文字列内のオブジェクト全体を囲む中かっこ "{}" の余分なセットがあるようです。それらを削除して、機能するかどうかを確認しましたか?

JSON 文字列をいくつかの Web ベースのJSON フォーマッタに貼り付けましたが、最も外側の中括弧を削除するまで、すべてエラーが発生しました。

于 2015-11-10T14:25:44.167 に答える