使用 JSON.NET 反序列化格式错误的 JSON

Bar*_*aye 5 c# json.net

我有一个 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 类?

Yuv*_*kov 5

尝试这个:

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)

这确实有一些不必要的开销,但考虑到情况,它会做。