我将Json字符串反序列化为Object.This是我的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,而不是空交易对象!
答案 0 :(得分:2)
由于JSON的格式,JsonConvert将在response
中查找名为ResponseModel
的属性。尝试将您的JSON更改为仅作为响应的值,或者创建另一个类:
public class ResponseContainer
{
public ResponseModel response {get;set;}
}
答案 1 :(得分:1)
这里的问题可能与您的JSON格式有关。您的JSON最外面的项目response
,其中包含两个子项total_results
和trades
。要使上述代码起作用,您的JSON应该是这样的:
{
"total_results": 33,
"trades": [
{
"tid": "E231958349",
"num": 1,
"num_iid": 3424234,
"price": 200.07
}]
}
如果您打算保持原样,那么将您的模型更改为Mike在答案中所说的内容。您可以选择以下两种方式之一。
希望这清楚。