簡體   English   中英

將JSON反序列化為C#中的類

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM