C#解析不使用属性名作为对象的JSON数组
我正在使用一个API,它以字符串数组的形式返回一组订单数据C#解析不使用属性名作为对象的JSON数组,c#,arrays,json,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; } publ
"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反序列化一个对象,因此我最终得到了一个字符串数组类型的属性
orders
,但是有没有办法跳过它,让它直接映射到一个对象实例呢?似乎您的字符串不是一个有效的Json,当我尝试解析时,出现了以下错误:
应为对象或数组,而不是字符串。[代码1,结构1]
但是,我找到了一种反序列化它的方法。我看到您的json是一个数组,因此,我们可以将其解析为JArray
,并删除“订单”:
文本:
JsonConvert.DeserializeObject<JArray>(json.Replace("\"orders\":", string.Empty));
以下是示例及其结果。我认为您可能需要编写自己的转换器,因为没有属性,您无法将数据映射到类中的属性。如果您知道顺序总是相同的,那么您可以自己分配每个值。有关更多信息,请参见下面的答案:不确定直接映射到对象实例是什么意思-这正是.net json为您所做的
var orders=JsonConvert。反序列化(jsonString)
将返回为您创建的订单“实例”集合。您可以使用ObjectToArrayConverter
from来反序列化该JSON。事实上,这个问题可能是这个问题的重复。同意吗?
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);
}