C#解析没有属性名称作为对象的JSON数组

时间:2017-09-06 22:47:58

标签: c# arrays json

我正在使用一个API,它将一堆订单数据作为字符串数组返回。

"orders": [
    //[ price, size, order_id ]
    [ "295.96","0.05088265","3b0f1225-7f84-490b-a29f-0faef9de823a" ],
    ...
]

我需要使用Json.Net将其解析为以下格式的对象:

public class Order
{
    public decimal price { get; set; }
    public decimal size { get; set; }
    public Guid order_id { get; set; }
}

我怎样才能做到这一点?我知道如何使用Json.NET反序列化一个对象,所以我最终得到一个类型为string array的属性orders,但有没有办法跳过它并让它直接映射到一个对象实例呢?

1 个答案:

答案 0 :(得分:0)

当我尝试解析here时,您的字符串似乎不是有效的json,我有以下错误:

  

期望对象或数组,而不是字符串。[代码1,结构1]

但是,我找到了一种方法来反序列化它。我看到你的json是一个数组,因此,我们可以解析为JArray并删除"orders":文本:

JsonConvert.DeserializeObject<JArray>(json.Replace("\"orders\":", string.Empty));

现在,我们有一个数组,但我认为无法对OrderList<Order>类型进行显式转换,答案是我们需要迭代JArray

List<Order> orders = new List<Order>();

foreach (var item in arrayListed)
{
    Order order = new Order();
    order.price = (decimal)item[0];
    order.size = (decimal)item[1];
    order.order_id = (Guid)item[2];
    orders.Add(order);
}

这是 demostration 及其结果。