【问题标题】:Serialize KeyValuePair as [Key,Value] in JSON在 JSON 中将 KeyValuePair 序列化为 [Key,Value]
【发布时间】:2013-03-15 20:16:14
【问题描述】:

我需要返回具有这种结构的 json:

{"asks": [[PRICE, AMOUNT], ...],
 "bids": [[PRICE, AMOUNT], ...]}

PRICE 是十进制。 AMOUNT 是十进制

例子

{"asks":[[7.449,1],[7.4499,6.711]],
 "bids":[[7.40001,5],[7.3325,27.449]]}

我有一个带动作的控制器

public ActionResult GetTrades() 
{
  ///how should I construct the object ? 
  return Json(data, JsonRequestBehavior.AllowGet);
}

我已尝试返回此对象:

public class OrderBook
{
    public List<KeyValuePair<decimal, decimal>> asks { get; set; }
    public List<KeyValuePair<decimal, decimal>> bids { get; set; }
}

但我得到这样的回应:

{"asks":[{"Key":145.00000,"Value":152.38820689}],
 "bids":[{"Key":145.00000,"Value":3.48965517}]}

有什么想法吗?

【问题讨论】:

  • List&lt;List&lt;decimal&gt;&gt; asks 应该可以工作,或者也许 Tuple(T1,T2)?不要在这里使用 KeyValuePair。但是,如果在内部使用 KeyValuePair(或其他数据类型,如 Trade)更有意义,只需在传输之前将其映射到“易于序列化”的东西。
  • 10x ,我如何签署你的答案是正确的?

标签: asp.net-mvc json serialization keyvaluepair


【解决方案1】:

KeyValuePair 替换为List&lt;decimal&gt;decimal[2]

【讨论】:

    【解决方案2】:

    由于您对键和值使用相同的数据类型,因此可能 List 是一种可能性,在您的情况下,每个十进制数组的长度为 2。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-21
      • 2012-09-07
      • 1970-01-01
      • 2021-01-14
      • 2017-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多