loo*_*ers 2 c# sql serialization json
我尝试按以下方式在 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);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
虽然这个输出会给我
cl.Category = ['comA','comB','comC'] cl.Data = ['1,2,3','4,5,6','7,8,9']
如果您想获得类似的输出[{ name: 'comA', data: [1,2,3] }, { name: 'comB', data: [4,5,6] }, { name: 'comC', data: [7,8,9] }],则需要以不同的方式序列化您的对象。由于您需要 JSON 中的数字列表而不是字符串,因此您需要List在类定义中将数字表示为 a 。像这样的东西应该有效:
[Serializable]
public class ChartLoc
{
public string Category { get; set; }
public List<int> Data { get; set; }
}
public string myFunc()
{
string jsonString = "";
using (SqlConnection con = new SqlConnection(ConnectionString)
{
con.Open();
using (SqlCommand cmd = new SqlCommand("select * from table", con))
{
using (SqlDataReader reader = cmd.ExecuteReader())
{
List<ChartLoc> _ChartLoc = new List<ChartLoc>();
while (reader.Read())
{
ChartLoc chart = new ChartLoc();
chart.Data.Add(int.Parse(reader["col2"].ToString()));
chart.Data.Add(int.Parse(reader["col3"].ToString()));
chart.Data.Add(int.Parse(reader["col4"].ToString()));
if (reader["store"] != DBNull.Value)
chart.Category = reader["col1"].ToString();
_ChartLoc.Add(chart);
}
JavaScriptSerializer jss = new JavaScriptSerializer();
jsonString = jss.Serialize(_ChartLoc);
}
}
}
return jsonString;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24609 次 |
| 最近记录: |