Как я могу сделать этот кусок кода, который я должен создать для JSON файла?
Прямо сейчас я читаю значения в строке, но хочу, чтобы она автоматически создавала файл.
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
userinfo info = new userinfo();
info.userid = reader.GetInt32(0);
info.username = reader.GetValue(1).ToString();
info.password = reader.GetValue(2).ToString();
info.firstname = reader.GetValue(3).ToString();
info.lastname = reader.GetValue(4).ToString();
info.dob = reader.GetValue(5).ToString();
info.dateregistered = reader.GetValue(6).ToString();
JavaScriptSerializer jss = new JavaScriptSerializer();
jsonString = jss.Serialize(info);
//string json = JsonConvert.SerializeObject(info);
}
}
У вас может быть список userinfo. Затем вы можете сериализовать этот список и сохранить его в файл.
using (SqlDataReader reader = cmd.ExecuteReader())
{
List<userinfo> infoList = new List<userinfo>();
while (reader.Read())
{
userinfo info = new userinfo();
info.userid = reader.GetInt32(0);
info.username = reader.GetValue(1).ToString();
info.password = reader.GetValue(2).ToString();
info.firstname = reader.GetValue(3).ToString();
info.lastname = reader.GetValue(4).ToString();
info.dob = reader.GetValue(5).ToString();
info.dateregistered = reader.GetValue(6).ToString();
infoList.Add(info);
}
var jsonSerialiser = new System.Web.Script.Serialization.JavaScriptSerializer();
string jsonString = jsonSerialiser.Serialize<(infoList);
System.IO.File.WriteAllText(@"D:\userlist.json", jsonString);
}
Для чтения
jsonSerialiser.Deserialize<List<userinfo>>(System.IO.File.ReadAllText(@"D:\userlist.json"));
Этот код ниже выполняет итерацию по каждому значению считывателя и добавляет их в словарь, который добавляется в список.
Словарь будет сериализован как объект в JSON, и List будет сериализован как массив.
string json = string.Empty;
List<object> objects = new List<object>();
using (SqlConnection conn = new SqlConnection("connectionstring"))
{
conn.Open();
using (SqlCommand command = conn.CreateCommand())
{
command.CommandText = "SELECT * FROM USERS";
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
IDictionary<string, object> record = new Dictionary<string, object>();
for (int i = 0; i < reader.FieldCount; i++)
{
record.Add(reader.GetName(i), reader[i]);
}
objects.Add(record);
}
}
}
}
json = JsonConvert.SerializeObject(objects);
using (StreamWriter sw = new StreamWriter(File.Create("C:\\path\\file.json")))
{
sw.Write(json);
}
json.net
но ваш код использует встроенный сериализатор. Какой ответ вы хотите использовать?