Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#解析不使用属性名作为对象的JSON数组_C#_Arrays_Json - Fatal编程技术网

C#解析不使用属性名作为对象的JSON数组

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

我正在使用一个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反序列化一个对象,因此我最终得到了一个字符串数组类型的属性
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);
}