我发现了类似的问题,但似乎没有任何解决方案对我的情况有帮助。
我的 json 看起来像这样:
{"array": [
{"order_id": 4923887462, "type_id": 19297, "location_id": 60008494, "volume_total": 1, "volume_remain": 1, "min_volume": 1, "price": 130000000.0, "is_buy_order": false, "duration": 90, "issued": "2017-07-25T16:40:18Z", "range": "region"},
{"order_id": 4926414947, "type_id": 19297, "location_id": 60008494, "volume_total": 1, "volume_remain": 1, "min_volume": 1, "price": 92000000.0, "is_buy_order": false, "duration": 90, "issued": "2017-07-29T06:47:29Z", "range": "region"},
{"order_id": 4927013184, "type_id": 19297, "location_id": 60008494, "volume_total": 1, "volume_remain": 1, "min_volume": 1, "price": 91999989.82, "is_buy_order": false, "duration": 90, "issued": "2017-07-29T22:26:05Z", "range": "region"},
{"order_id": 4927082974, "type_id": 19297, "location_id": 60008494, "volume_total": 2, "volume_remain": 2, "min_volume": 1, "price": 91999989.81, "is_buy_order": false, "duration": 90, "issued": "2017-07-30T00:22:36Z", "range": "region"}
]}
我的处理代码的相关部分如下所示:
using System;
using System.Threading.Tasks;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Collections.Generic;
namespace sqlite_test
{
public class Program
{
public static void Main()
{
int item = 19297;
string json = ESIHelper.MarketFetch.getMarketData((int)ESIHelper.Regions.Domain,item,"sell",1).Result;
ESIHelper.Models.MarketOrderList obj = JsonConvert.DeserializeObject<ESIHelper.Models.MarketOrderList>(json);
}
}
}
和
using System.Collections.Generic;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace ESIHelper.Models
{
public class MarketOrder
{
[Newtonsoft.Json.JsonProperty(PropertyName = "duration")]
public int duration { get; set; }
[Newtonsoft.Json.JsonProperty(PropertyName = "is_buy_order")]
public bool is_buy_order { get; set; }
[Newtonsoft.Json.JsonProperty(PropertyName = "issued")]
public string issued { get; set; }
[Newtonsoft.Json.JsonProperty(PropertyName = "location_id")]
public int location_id { get; set; }
[Newtonsoft.Json.JsonProperty(PropertyName = "min_volume")]
public int min_volume { get; set; }
[Newtonsoft.Json.JsonProperty(PropertyName = "order_id")]
public int order_id { get; set; }
[Newtonsoft.Json.JsonProperty(PropertyName = "price")]
public double price { get; set; }
[Newtonsoft.Json.JsonProperty(PropertyName = "range")]
public string range { get; set; }
[Newtonsoft.Json.JsonProperty(PropertyName = "type_id")]
public int type_id { get; set; }
[Newtonsoft.Json.JsonProperty(PropertyName = "volume_remain")]
public int volume_remain { get; set; }
[Newtonsoft.Json.JsonProperty(PropertyName = "volume_total")]
public int volume_total { get; set; }
}
public class MarketOrderList
{
public List<MarketOrder> MarketOrder { get; set; }
}
}
在内存中,我的 json 字符串看起来像预期的那样,json
但obj
为空。
我正在使用 .NET core 1.1 和 Newtonsoft Json.net 10.0.3。
你得到的是否是空的对象,因为你没有一个添加[JsonProperty]
属性添加到MarketOrder
你的财产MarketOrderList
类和属性名称不匹配什么是在JSON。应该是这样的:
public class MarketOrderList
{
[JsonProperty(PropertyName = "array")]
public List<MarketOrder> MarketOrder { get; set; }
}
但是,您还有另一个问题。order_id
JSON 中的值太大而无法放入int
. 您需要将类中的order_id
属性声明更改MarketOrder
为 along
才能使其工作。
public class MarketOrder
{
...
[JsonProperty(PropertyName = "order_id")]
public long order_id { get; set; }
...
}
通过这两个更改,它将很好地反序列化。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句