我试图用C#以下面的方式格式化JSON。col1 col2 col3 col4 comA 1 2 3 comB 4 5 6 comC 7 8 9
我希望JSON输出如下所示[{ name: 'comA', data: [1,2,3] }, { name: 'comB', data: [4,5,6] }, { name: 'comC', data: [7,8,9] }]
我有下面的代码``
`
public class ChartLoc
{
public string Category { get; set; }
public string Data{ get; set; }
}
public void myFunc(){
using (SqlConnection con = new SqlConnection(ConnectionString)
{
con.Open();
using (SqlCommand cmd = new SqlCommand("select * from table", con))
{
using (SqlDataReader reader = cmd.ExecuteReader())
{
List<String> _Category = new List<String>();
List<String> _Data = new List<String>();
while (reader.Read())
{
_Data.Add(reader["col2"].ToString() + ',' + reader["col3"].ToString() + ',' + reader["col4"].ToString());
if (reader["store"] != DBNull.Value) _Category.Add(reader["col1"].ToString());
}
JavaScriptSerializer jss = new JavaScriptSerializer();
cl.Category = jss.Serialize(_Category);
cl.Data = jss.Serialize(_Data);
}
}
}
}
`
``
虽然这个输出会给我
cl.类别=['comA','comB','comC'] cl.数据=['1,2,3',' 4,5,6','7,8,9']
2条答案
按热度按时间i2byvkas1#
如果你想得到类似
[{ name: 'comA', data: [1,2,3] }, { name: 'comB', data: [4,5,6] }, { name: 'comC', data: [7,8,9] }]
的输出,你需要以不同的方式序列化你的对象。因为你想在JSON中得到一个数字列表而不是字符串,你需要在类定义中把数字表示为List
。类似这样的方式应该可以工作:3pmvbmvn2#
如果你想要一个包含一组类别/数据对的JSON字符串,你将需要序列化一个对象。
另外,如果你的Data对象是一个字符串,它将被序列化为一个字符串(即“1,2,3”而不是[1,2,3])。如果你真的想解决这个问题,你将需要一个int的集合。
产生的JSON与您正在寻找的内容更加相似...
[{“类别”:“comA”,“数据”:[1,2,3]},{“类别”:“comB”,“数据”:[4,5,6]},{“类别”:“comC”,“数据”:[7,8,9]}]