我正在使用一个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
,但有没有办法跳过它并让它直接映射到一个对象实例呢?
答案 0 :(得分:0)
当我尝试解析here时,您的字符串似乎不是有效的json,我有以下错误:
期望对象或数组,而不是字符串。[代码1,结构1]
但是,我找到了一种方法来反序列化它。我看到你的json是一个数组,因此,我们可以解析为JArray
并删除"orders":
文本:
JsonConvert.DeserializeObject<JArray>(json.Replace("\"orders\":", string.Empty));
现在,我们有一个数组,但我认为无法对Order
或List<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 及其结果。