Как написать файл Json в C#?



Привет мне нужно записать следующие данные в текстовый файл, используя формат Json в C#? Скобки важны, чтобы быть допустимым форматом JSON



[
{
"Id": 1,
"SSN": 123,
"Message": "whatever"

},
{
"Id": 2,
"SSN": 125,
"Message": "whatever"
}
]


и вот моя модель класс



public class data
{
public int Id { get; set; }
public int SSN { get; set; }
public string Message {get; set;}

}
1009   4  

4 ответов:

Я бы рекомендовал Json.Net, см. пример ниже:

List<data> _data = new List<data>();
_data.Add(new data()
{
    Id = 1,
    SSN = 2,
    Message = "A Message"
});

string json = JsonConvert.SerializeObject(_data.ToArray());

//write string to file
System.IO.File.WriteAllText(@"D:\path.txt", json);

или немного более эффективная версия приведенного выше кода (не использует строку в качестве буфера):

//open file stream
using (StreamWriter file = File.CreateText(@"D:\path.txt"))
{
     JsonSerializer serializer = new JsonSerializer();
     //serialize object directly into file stream
     serializer.Serialize(file, _data);
}

документы: сериализовать JSON в файл


почему? Вот это функция сравнения между обычными сериализаторами, а также тестовыми тестами .

Ниже приведен график производительности, взятый из связанная статья:

enter image description here

этой отдельный пост, указано, что:

Json.NET всегда была эффективна память, потоковое чтение и запись больших документов, а не загрузка их полностью в память, но я смог найти несколько ключевых мест, где выделение объектов может быть уменьшено...... (сейчас) Json.Net (6.0) выделяет в 8 раз меньше памяти, чем JavaScriptSerializer

.

контрольные показатели, как представляется, Json.Net 5, текущая версия (при написании) составляет 10. Какая версия стандартных сериализаторов .Net используется не упоминается

эти тесты, очевидно,от разработчиков, которые поддерживают библиотеку. Я не проверил их претензии. Если вы сомневаетесь, проверьте их сами.

пример в ответе Лиама сохраняет файл в виде строки в одной строке. Я предпочитаю добавлять форматирование. Кто-то в будущем может захотеть изменить некоторые значения вручную в файле. Если вы добавляете форматирование, это проще сделать.

следующее добавляет основной отступ JSON:

 string json = JsonConvert.SerializeObject(_data.ToArray(), Formatting.Indented);

для этого есть встроенная функциональность с помощью Класс JavaScriptSerializer:

var json = JavaScriptSerializer.Serialize(data);
var responseData = //Fetch Data
string jsonData = JsonConvert.SerializeObject(responseData, Formatting.None);
System.IO.File.WriteAllText(Server.MapPath("~/JsonData/jsondata.txt"), jsonData);

Comments

    Ничего не найдено.