需要以特定格式生成JSON

时间:2011-08-16 13:40:38

标签: json jquery

我在文件中有这样的JSON数组

var jsonfromfile = [
[Date.UTC(2004, 1, 3), 19.3],
[Date.UTC(2004, 1, 10), 12.7],
[Date.UTC(2004, 1, 17), 3.6],
[Date.UTC(2004, 1, 24), 19.1],
[Date.UTC(2004, 1, 31), 12.1],
[Date.UTC(2004, 2, 7), 11.3],
[Date.UTC(2004, 2, 28), 9.3],
[Date.UTC(2004, 3, 6), 14.3],
[Date.UTC(2004, 3, 13), 5.8],
[Date.UTC(2004, 3, 20), 8.6],
[Date.UTC(2004, 3, 27), 19.9],
[Date.UTC(2004, 4, 3), 14.2],
[Date.UTC(2004, 4, 10), 12.8],
[Date.UTC(2004, 4, 17), 10.6],
[Date.UTC(2004, 4, 24), 8.4],
[Date.UTC(2004, 5, 1), 19.8],
[Date.UTC(2004, 5, 8), 13.8]
];

我正在使用虚拟数据制作此图表http://www.highcharts.com/products/highstock的第一步。

现在我想在图表中使用动态数据,所以我有控制器返回键值数据

public virtual JsonResult GetData(int type)
        {            
            Dictionary<string, decimal> data = getData(type);           

            return Json(data.ToArray(), JsonRequestBehavior.AllowGet);
        }

我用jquery ajax调用该控制器。

    var jsonFirstTry  = {        
                data: []
            };

            $.ajax({

                url: actionUrl,
                dataType: 'json',
                cache: false,
                data: { type: type },

                success: function (items) {
                    var jsonSecondTry = "[";
                    $.each(items, function (itemNo, item) {

                        jsonFirstTry.data.push(item.Key, item.Value);

                        jsonSecondTry += "[" + item.Key + "," + item.Value + "],";

                    })

                    jsonSecondTry = jsonSecondTry.substring(0, jsonSecondTry.length-1);

                    jsonSecondTry += "];";

                    //...
              }
});

我尝试重现js文件(jsonfromfilejsonFirstTryjsonSecondTry中的数据,但无法像js文件中那样完成数据

以下是从js文件加载的数据如何在调试中查找: Json loaded from file

以下是我第一次尝试数据的方式 FirstTry

这是第二次尝试数据(但它只是字符串,因此它不是图表的有效数据....)

Second try

所以我需要像第一张图片一样生成相同的jason,任何想法我该怎么做?

1 个答案:

答案 0 :(得分:0)

您的初始示例(var jsonfromfile = [...)不是JSON。它是一个数组数组(在JavaScript中),使用JavaScript的数组文字语法。

JSON是一个表示序列化数据结构的字符串,使用JavaScript对象文字语法的子集。 JSON不能有方法调用或方法定义。

因此,尝试以JSON格式提供您用作样本数据的内容将无法正常工作。您需要提供真正的JSON并根据需要对其进行操作(在部分内容上调用Date.UTC())。