Таблица SQL в файл JSON

1

Как я могу сделать этот кусок кода, который я должен создать для 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);
      }
 }
  • 0
    Вы пометили это как json.net но ваш код использует встроенный сериализатор. Какой ответ вы хотите использовать?
  • 1
    Вы спрашиваете, как сохранить строку в файл?
Показать ещё 7 комментариев
Теги:
sql-server

2 ответа

1
Лучший ответ

У вас может быть список 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"));
  • 0
    Спасибо, это прекрасно работает.
1

Этот код ниже выполняет итерацию по каждому значению считывателя и добавляет их в словарь, который добавляется в список.

Словарь будет сериализован как объект в 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);
}
  • 0
    Я получаю то же значение, что и раньше, но это не создает файл JSON для меня. понимаю, я очень новичок в этом и не понимаю. Мне нужны эти значения для формирования файла JSON. Является ли это возможным?
  • 0
    Я обновил код!
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню