違い - 匿名型 c# 配列



この匿名型がJsonConvert.DeserializeAnonymousTypeを使用して正しく非直列化されないのはなぜですか? (1)

私が言うことができる限り、ここに2つの問題があります:

  • デシリアライズするresponseプロパティがありません。
  • "token:123 id:191"部分は実際には単なる文字列です - 外側のtokenプロパティの値

したがって、コードを次のように変更すると、

var def = new
{
    response = new { token = "" }
};

var deserializedToken = JsonConvert.DeserializeAnonymousType(json, def);
Console.WriteLine(deserializedToken);

あなたは終わるでしょう:

{ response = { token = {"token":"123","id":191} } }

token / idの部分を逆シリアル化したい場合は、次のようにすることができます:

var innerDef = new { token = "", id = "" };
var deserializedInner = JsonConvert.DeserializeAnonymousType
    (deserializedToken.response.token, innerDef);
Console.WriteLine(deserializedInner);

それが印刷されます:

{ token = 123, id = 191 }

私はJSON文字列を持っています:

{"response":{"token":"{\"token\":\"123\",\"id\":191}"}}

そして、私はそれをデシリアライズするために次のコードを持っていますが、nullを返しています:

 var def = new
       {
           token = new { token = string.Empty, id= string.Empty }
        };

  var deserializedToken = JsonConvert.DeserializeAnonymousType(token, def);

deserializedTokenはnull

ここでは、私が働くことができないより詳細な例を示します:

var def = new
            {
                code = string.Empty,
                message = string.Empty,
                url= string.Empty,
                token = new {token = string.Empty}
            };

            var response = JsonConvert.DeserializeAnonymousType(data, def);

            var innerDef = new { token= string.Empty, id= string.Empty };

            var deserializedInner = JsonConvert.DeserializeAnonymousType(response.token.token, innerDef);




json-deserialization