【发布时间】:2018-07-07 17:23:21
【问题描述】:
我正在搜索一种将数组(没有成员名称) 反序列化为 C# 对象的方法。提供了工作和预期的示例,我看到了许多类似的帖子,但不是我想要的,因此为什么要寻求一些帮助。
我是否需要采用实现自定义反序列化的方法,还是我错过了一些已经存在的东西?
// Deserialize Works This Way
public class Order
{
public string orderNo { get; set; }
public string customerNo { get; set; }
public List<List<double>> items { get; set; }
}
// Expected Covert Type.
public class OrderExpected
{
public string orderNo { get; set; }
public string customerNo { get; set; }
public List<OrderItem> items { get; set; }
}
public class OrderItem
{
public int itemId { get; set; }
public decimal price { get; set; }
public decimal quantity { get; set; }
}
我尝试过的代码以及我想做什么:
var json = "{\"orderNo\":\"AO1234\",\"customerNo\":\"C0129999\",\"items\":[[255, 1.65, 20951.60],[266, 1.80, 20000.00],[277, 1.90,0.50]]}";
// Works OK, but ins't what I am after
var order = JsonConvert.DeserializeObject<Order>(json);
// I'd like to get some help to get this approch working.
var orderexpected = JsonConvert.DeserializeObject<OrderExpected>(json);
关于 items 数组的更多信息: items 数组将由固定长度为 3 的数组组成,值分别代表 itemId、价格和数量。
附:我正在使用一个不受我控制的 API。
【问题讨论】:
-
您几乎肯定需要一个自定义反序列化器。 newtonsoft.com/json/help/html/CustomJsonConverter.htm
-
@SLaks 谢谢。似乎这很明显。我在这条路上。感谢您的及时回复。
-
您应该可以使用来自C# JSON.NET - Deserialize response that uses an unusual data structure 的
ObjectToArrayConverter<OrderItem>。事实上,这可能是重复的。同意?或者,您可以使用硬编码的JsonConverter,例如JSON deserialization - Map array indices to properties with JSON.NET 中的那个。
标签: c# arrays json serialization json.net