[英]Deserialize JSON to class in C#
如果我的string(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"}'}
我無法反序列化。 在這里,該類只有一個屬性是數據...我該怎么做?
您將需要另一個包裝實際帳戶的類,例如:
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);
您可以將整個json反序列化為JObject,然后將其一部分解析為Account:
JObject wholeJson = JObject.Parse(json);
JToken dataToken = wholeJson.GetValue("data");
Account account = dataToken.ToObject<Account>();
我的建議是,您可以准備與json結構相同的對象。 喜歡,
public class Test
{
public string data{ get; set; }
}
您可以立即從對象中獲取數據並反序列化它。 或在JObject中讀取它,然后獲取數據並反序列化。
嘗試這個
public class Account
{
public string Code { get; set; }
public string Status { get; set; }
}
public class AccountWrapper
{
[JsonProperty(PropertyName = "data")]
public string Data { get; set; }
public Account Account
{
get { return JsonConvert.DeserializeObject<Account>(Data); }
}
}
// DeserializeObject
string data = "{'data':'{\"Code\":\"MXXXXX\",\"Status\":\"failed\"}'}";
var account = JsonConvert.DeserializeObject<AccountWrapper>(data).Account;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.