gpt4 book ai didi

c# - 为什么这个匿名类型不能使用 JsonConvert.DeserializeAnonymousType 正确反序列化?

转载 作者:太空狗 更新时间:2023-10-29 22:22:42 24 4
gpt4 key购买 nike

我有 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 为空

这是一个我无法开始工作的更详细的示例:

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);

最佳答案

据我所知,这里有两个问题:

  • 您没有要反序列化的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 }

关于c# - 为什么这个匿名类型不能使用 JsonConvert.DeserializeAnonymousType 正确反序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20123398/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com