xai*_*oft 5 .net c# json json.net json-deserialization
我有JSON字符串:
{"response":{"token":"{\"token\":\"123\",\"id\":191}"}}
Run Code Online (Sandbox Code Playgroud)
然后我有以下代码反序列化它,但它返回null:
var def = new
{
token = new { token = string.Empty, id= string.Empty }
};
var deserializedToken = JsonConvert.DeserializeAnonymousType(token, def);
Run Code Online (Sandbox Code Playgroud)
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);
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 11
据我所知,这里有两个问题:
response要反序列化的属性token属性的值因此,如果您将代码更改为:
var def = new
{
response = new { token = "" }
};
var deserializedToken = JsonConvert.DeserializeAnonymousType(json, def);
Console.WriteLine(deserializedToken);
Run Code Online (Sandbox Code Playgroud)
然后你会最终得到:
{ response = { token = {"token":"123","id":191} } }
Run Code Online (Sandbox Code Playgroud)
如果你想反序列化令牌/ id部分,你可以这样做:
var innerDef = new { token = "", id = "" };
var deserializedInner = JsonConvert.DeserializeAnonymousType
(deserializedToken.response.token, innerDef);
Console.WriteLine(deserializedInner);
Run Code Online (Sandbox Code Playgroud)
然后打印:
{ token = 123, id = 191 }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9288 次 |
| 最近记录: |