我有一个 JSON 片段,如下所示:
{"123":{"name":"test","info":"abc"}}
Run Code Online (Sandbox Code Playgroud)
的123是一个ID,并且可以在每个请求而改变。这是我无法控制的。
我想使用 JSON.NET 反序列化 JSON。我试过了:
User u = JsonConvert.DeserializeObject<User>(json);
Run Code Online (Sandbox Code Playgroud)
但是,除非我JsonProperty像这样定义属性,否则这不起作用:
[JsonProperty("123")]
public string ID { get; set; }
Run Code Online (Sandbox Code Playgroud)
但是当然我实际上不能这样做,因为 ID123会在每次请求时更改。
如何使用 JSON.NET 读取 ID 属性并将其应用于 ID 类?
尝试这个:
var json = "{\"123\":{\"name\":\"test\",\"info\":\"abc\"}}";
var rootObject = JsonConvert.DeserializeObject<Dictionary<string, User>>(json);
var user = rootObject.Select(kvp => new User
{ ID = kvp.Key,
Name = kvp.Value.Name,
Info = kvp.Value.Info
}).First();
Run Code Online (Sandbox Code Playgroud)
这确实有一些不必要的开销,但考虑到情况,它会做。