如果我的字符串(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"}'}
我无法反序列化。这里的类只有一个属性是数据......我怎么能这样做?
答案 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