我对象的代码如下,
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 ...将非常感谢任何帮助,
答案 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类的形式.. 这样可以避免问题
public class Series
{
public List<object> Data { get; set; }
}
public class Root
{
public List<Series> Series { get; set; }
}
现在将项添加到集合和序列化对象..这是对序列化和反序列化对象时的正确方法。