在C#中将JSON反序列化为类

时间:2017-02-08 10:07:25

标签: c# asp.net json

如果我的字符串(json)只包含以下部分,我可以在newtonsoft的库的帮助下反序列化它。

{"Code": "MXXXXX", "Status": "failed"}

反序列化代码:

public class Account
{
    public string Code{ get; set; }
    public string Status{ get; set; }
}
Account account = JsonConvert.DeserializeObject<Account>(json);

Console.WriteLine(account.Code);

但如果我的字符串是这样的:

{'data': ' {"Code": "MXXXXX", "Status": "failed"}'}

我无法反序列化。这里的类只有一个属性是数据......我怎么能这样做?

4 个答案:

答案 0 :(得分:4)

您需要另一个类来包装实际帐户,例如:

public class Account
{
    public Data Data { get; set };
}

public class Data
{
    public string Code{ get; set; }
    public string Status{ get; set; }
}

Account account = JsonConvert.DeserializeObject<Account>(json);

Console.WriteLine(account .Data.Code);

答案 1 :(得分:3)

您可以将整个json反序列化为JObject,然后将其中的一部分解析为Account:

JObject wholeJson = JObject.Parse(json);
JToken dataToken = wholeJson.GetValue("data");
Account account = dataToken.ToObject<Account>();

答案 2 :(得分:2)

我的建议是,你可以准备与json结构相同的对象。像,

public class Test
{
    public string data{ get; set; }        
}

您可以从对象中获取数据并将其反序列化为您现在正在执行的操作。 或者在JObject中读取它,然后获取数据并反序列化。

答案 3 :(得分:2)

试试这个

awk