数据表到 json - c#
Datatable to json - c#
我有一个数据 table 如下所示
Subject
Question
Qtype
English
xxxxxxx
Subjective
English
yyyyyyy
Subjective
English
zzzzzzz
Objective
English
sasasas
Objective
English
cvcvcvv
Subjective
问题列将包含文本格式的问题。
Json应该是
{
"Subject":"English",
"xxxxxxx":"Subjective",
"yyyyyyy":"Subjective",
"zzzzzzz":"Objective",
"sasasas":"Objective",
"cvcvcvv":"Subjective"
}
我试过如下。但这不会return以上输出。
var list = new List<string[]>();
foreach (DataRow row in dt_questions.Rows)
{
string Subject = row["Subject"].ToString();
string Question= row["Question"].ToString();
string Qtype= row["Qtype"].ToString();
list.Add(new string[] { Subject, Question, Qtype});
}
var jsonSerialiser = new JavaScriptSerializer();
var json = jsonSerialiser.Serialize(list);
由于 'subject' 应该只使用一次,所以你必须在循环之外处理它,并循环其余部分。
然后使用字典而不是列表:
var dt = new DataTable();
foreach(string c in "Subject,Question,Qtype".Split(','))
dt.Columns.Add(c, typeof(string));
for(int i = 1; i<= 5;i++)
dt.Rows.Add("English", $"Q{i}", (i==3 || i==4 ? "Objective" : "Subjective"));
var dc = new Dictionary<string, string>();
dc.Add("Subject", dt.Rows[0].Field<string>("Subject"));
foreach(DataRow r in dt.Rows)
{
dc.Add(r.Field<string>("Question"), r.Field<string>("QType"));
}
var jsonSerialiser = new JavaScriptSerializer();
var json = jsonSerialiser.Serialize(dc);
或使用 Newtonsoft:
string json2 = Newtonsoft.Json.JsonConvert.SerializeObject(dc);
我有一个数据 table 如下所示
Subject | Question | Qtype |
---|---|---|
English | xxxxxxx | Subjective |
English | yyyyyyy | Subjective |
English | zzzzzzz | Objective |
English | sasasas | Objective |
English | cvcvcvv | Subjective |
问题列将包含文本格式的问题。
Json应该是
{
"Subject":"English",
"xxxxxxx":"Subjective",
"yyyyyyy":"Subjective",
"zzzzzzz":"Objective",
"sasasas":"Objective",
"cvcvcvv":"Subjective"
}
我试过如下。但这不会return以上输出。
var list = new List<string[]>();
foreach (DataRow row in dt_questions.Rows)
{
string Subject = row["Subject"].ToString();
string Question= row["Question"].ToString();
string Qtype= row["Qtype"].ToString();
list.Add(new string[] { Subject, Question, Qtype});
}
var jsonSerialiser = new JavaScriptSerializer();
var json = jsonSerialiser.Serialize(list);
由于 'subject' 应该只使用一次,所以你必须在循环之外处理它,并循环其余部分。
然后使用字典而不是列表:
var dt = new DataTable();
foreach(string c in "Subject,Question,Qtype".Split(','))
dt.Columns.Add(c, typeof(string));
for(int i = 1; i<= 5;i++)
dt.Rows.Add("English", $"Q{i}", (i==3 || i==4 ? "Objective" : "Subjective"));
var dc = new Dictionary<string, string>();
dc.Add("Subject", dt.Rows[0].Field<string>("Subject"));
foreach(DataRow r in dt.Rows)
{
dc.Add(r.Field<string>("Question"), r.Field<string>("QType"));
}
var jsonSerialiser = new JavaScriptSerializer();
var json = jsonSerialiser.Serialize(dc);
或使用 Newtonsoft:
string json2 = Newtonsoft.Json.JsonConvert.SerializeObject(dc);