以所需的JSON格式获取数据

时间:2013-11-18 08:20:46

标签: c# json json.net

我对象的代码如下,

System.Web.Script.Serialization.JavaScriptSerializer jSearializer = new System.Web.Script.Serialization.JavaScriptSerializer();
List<object> modified_listofstrings = new List<object>();
List<string> p_Name = new List<string>();
List<float> Data = new List<float>();
List<string> s_Name = new List<string>();
List<float> p_Value = new List<float>();


var obj1=new{
       Data=p_Value
            };
var obj2 = new
            {
        Series=obj1,
            };
 modified_listofstrings.Add(obj1);
jSearializer.Serialize(modified_listofstrings);

我得到的输出如下,

[{"Series":{"Data":[14,14,14,14,18,18,18,18,17,15,13,12]}}]

但我希望输出格式如下,

"Series" : [ { "Data" : [14,14,14,14,18,18,18,18,17,15,13,12,""] } ],

因为我想将Values用作series.Data ...将非常感谢任何帮助,

3 个答案:

答案 0 :(得分:1)

modified_listofstrings具有List类型,因此它始终被序列化为数组。但是你可能只序列化modified_listofstrings的第一个元素 -

jSearializer.Serialize(modified_listofstrings[0]); 

并准确得到你想要的东西。

或另一个答案。只需更改obj1属性,如下所示:

var obj1=new[] { 
    new { Data = p_Value } 
}; 

或者像这样改变obj2:

var obj2 = new 
{ 
    Series = new[] { obj1 } 
}; 

答案 1 :(得分:0)

尝试将modified_listofstrings作为对象而不是List。除非你想让它成为一个列表。如果是这样的话,就像@Dmytro Rudenko建议的那样,jSearializer.Serialize(modified_listofstrings [0])。

答案 2 :(得分:0)

尝试将json转换为csharp类的形式.. 这样可以避免问题

来自http://json2csharp.com/

public class Series
{
    public List<object> Data { get; set; }
}

public class Root
{
    public List<Series> Series { get; set; }
}

现在将项添加到集合和序列化对象..这是对序列化和反序列化对象时的正确方法。