无法反序列化JSON

本文关键字:JSON 反序列化 | 更新日期: 2023-09-27 18:06:49

我有一个JSON字符串(根据验证器)是有效的JSON,我被困在试图解析它作为c#中的对象。

示例字符串:

{"asks":[["49999.99000","20.00000000"],["900.00000","4.00000000"],["100.00000","5.00000000"]],"bids":[["5.40000","15.06500000"],["5.53675","0.50000000"],["5.00000","6.00000000"]]}

我试过使用http://json2csharp.com/,它建议这个类(它确实工作):

public class RootObject
{
    public List<List<string>> asks { get; set; }
    public List<List<string>> bids { get; set; }
}

但是我想把它解析成List<Ask> asks { get; set; }。我尝试了以下操作:

public class Orderbook
{
    public List<Ask> asks { get; set; }
    public List<Bid> bids { get; set; }
}
public class Ask
{
    public double amount { get; set; }
    public double price { get; set; }
}
public class Bid
{
    public double amount { get; set; }
    public double price { get; set; }
}

但是对于Type '命名空间,这就失败了。

无法反序列化JSON

不需要AskBid

var orderBook = JsonConvert.DeserializeObject<Orderbook>(json); //Json.Net
//OR
var orderBook = new JavaScriptSerializer().Deserialize<Orderbook>(json);  //JavaScriptSerializer
public class Orderbook
{
    public List<List<string>> asks { get; set; }
    public List<List<string>> bids { get; set; }
}

BTW:值是字符串("49999.99000")不是双精度

编辑

asksbids数组的数组,因此将它们转换为特定类的数组(在反序列化期间)将需要许多技巧(如果可能的话)。你为什么不简单地在orderBook上迭代来形成你想要的呢?

var asks = orderBook.asks.Select(a => 
                      new Ask { 
                          amount = double.Parse(a[0],CultureInfo.InvariantCulture), 
                          price = double.Parse(a[1],CultureInfo.InvariantCulture)
                      }).ToList();