0

我正在尝试使用HighStock 库来创建股票图表。为了用数据填充图表,他们的示例指定了这个 source。第一个参数是以毫秒为单位的 unixtime,第二个参数是股票收盘价。我不知道这是否是有效的 json,但我认为以下是编​​写 json 的更合适的方式。

[{"Closing":63.15000,"Date":1262559600000},{"Closing":64.75000,"Date":1262646000000}, ...

我想我别无选择,只能适应 HighStocks 语法。我可以通过循环和向字符串添加正确的语法来解决这个问题,但这似乎是初级的。序列化 C# 对象以创建我的 json 会更明智吗?如果是这种情况 - 我怎样才能达到示例中指定的语法?

让我们说这是我的 c# 对象:

public class Quote {
  public double Date { get; set; }
  public decimal Closing { get; set; }
}

我是否让它变得不必要的复杂?我应该只格式化一个json字符串吗?

4

2 回答 2

3

他们正在寻找的格式是有效的 json。它是一个数组数组。

var item1 = new[] { 1, 2 };
var item2 = new[] { 3, 4 };
var itemArray = new[] { item1, item2 };

itemArray将序列化为[ [1, 2], [3, 4] ].

您应该能够保留现有的类,并将其作为序列化问题。

例如,在 mvc 应用程序中,您可以:

public ActionResult Quotes() { 
    var quotes = service.GetQuotes(); //IEnumerable<Quote>
    return Json(quotes.Select(x=>new[] { EpochMillis(x.Date), (double)x.Closing }).ToArray());
}

private double EpochMillis(DateTime date)
{
    DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
    TimeSpan diff = date - origin;
    return Math.Floor(diff.TotalMilliseconds);
}
于 2012-03-31T16:52:58.950 回答
0

乍一看,我会说,将 { } 替换为 [ ] 以获得基本格式。之后,您可能可以删除(有效 JSON 的)标签以获得最终结果。

我不建议使用根本不支持官方 json 标准的库......

尝试其他库,如 Infragistics 或 C1 - 它们非常好!

问候,

于 2012-03-31T16:35:44.870 回答