2016-09-19 57 views
2

如何指定折叠?JsonConvert.DeserializeObject与折叠

这里是我的JSON:

{ 
    "result": 
    { 
     "code": "123", 
     "version": "1.2.3" 
    }, 
    "error": null 
} 

这是我的班级我想反序列化:

public class Info 
{ 
    [JsonProperty("code")] 
    public string Code { get; set; } 

    [JsonProperty("version")] 
    public string Version { get; set; } 

    [JsonProperty("error")] 
    public string Error { get; set; } 
} 

调用是这样的:

var info = JsonConvert.DeserializeObject<Info>(json); 

那么,有没有反正我可以指定,codeversion根据result节?我相信我需要使用JsonSerializeSettings或类似的东西。

+0

类似的问题:我可以序列与Json.net一个操作嵌套属性上我的课?](https://stackoverflow.com/questions/30175911)和[反序列化JSON到扁平类](https://stackoverflow.com/questions/30222921)。 – dbc

回答

3

如果你可以修改你的类,那么你可以创建一个包含您的子属性第二类:

public class Info 
{ 
    [JsonProperty("result")] 
    public Result Result { get; set; } 

    [JsonProperty("error")] 
    public string Error { get; set; } 
} 

public class Result 
{ 
    [JsonProperty("code")] 
    public string Code { get; set; } 

    [JsonProperty("version")] 
    public string Version { get; set; } 
} 
+1

这不符合OP的要求。他们特别想要保持当前的结构,并将结果属性有效地折叠到该结构中。 (特别是,这个解决方案没有沿着“折叠”的路线......你刚刚提出“这里是代表你的JSON的直接方式”。) –

+0

授予。我认为这个班是多变的。我更新了答案以反映这一点。 – Nico

+0

谢谢,我已经实现了这个代码。 – Vlad