簡體   English   中英

如何使用Newtonsoft.Json來DeserializeObject?

[英]How to DeserializeObject with Newtonsoft.Json?

我正在將Json字符串反序列化為Object。這是我的Json字符串需要反序列化。

{
    "response": {
        "total_results": 33,
        "trades": [
            {
                "tid": "E231958349",
                "num": 1,
                "num_iid": 3424234,
                "price": 200.07
            }]
                }
}

我已經定義了一個響應模型。這是我的代碼:

    public class ResponseModel
    {
        public int total_results { set; get; }
        public List<TradeModel> trades{ set; get;}        
    }

我還定義了交易模型:

    public class TradeModel
    {
        #region Attribute

        #region oid
        private int tid;

        public int Oid
        {
            get { return tid; }
            set { tid = value; }
        }
        #endregion

        #endregion
    }

這是我的反序列化代碼:

        public static ResponseModel MapResonseJsonToModel(string json)
        {
            ResponseModel orderModel = new ResponseModel();                   
            orderModel = JsonConvert.DeserializeObject<ResponseModel>(json);                   
            return orderModel;
        }

我的問題是:為什么每次total_results返回0,而交易返回null?正確的是33,而不是空交易對象!

由於您的JSON格式,JsonConvert將在ResponseModel尋找一個名為response的屬性。 嘗試將JSON更改為僅作為響應的值,或者創建另一個類似這樣的類:

public class ResponseContainer
{
   public ResponseModel response {get;set;} 
}

這里的問題可能與您的JSON格式有關。 您的JSON具有response作為最外部的項目,在內部,它具有兩個子項目,即total_resultstrades 為了使以上代碼正常工作,您的JSON應該如下所示:

{
        "total_results": 33,
        "trades": [
            {
                "tid": "E231958349",
                "num": 1,
                "num_iid": 3424234,
                "price": 200.07
            }]       
}

如果您打算保持原樣,則將模型更改為Mike在回答中所說的。 您可以在此處選擇兩種方式之一。

希望這個清除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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