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을 파일로 직렬화
왜? 다음 은 일반적인 직렬 변환기와 벤치 마크 테스트 † ‡ 의 기능 비교 입니다.
아래는 링크 된 기사에서 얻은 성능 그래프입니다.
이 별도의 게시물은 다음 과 같이 말합니다.
Json.NET은 항상 메모리 효율성이 뛰어나서 큰 문서를 메모리에 완전히로드하지 않고 읽기 및 쓰기를 스트리밍하지만 객체 할당을 줄일 수있는 몇 가지 주요 위치를 찾을 수있었습니다 ...... (현재) Json.Net (6.0) JavaScriptSerializer 이상 할당 8 배 적은 메모리 ‡
.Net Core 3.0 이후 업데이트
이 글을 쓴 후 새로운 아이 System.Text.Json
가 .Net Core 3.0에 추가되었습니다. Microsoft는 이것이 Newtonsoft보다 나은 점에 대해 몇 가지 주장을합니다 . 그것을 포함하면 Newtonsoft보다 빠릅니다 . 위와 같이, 나는이 자신을 테스트하기 위해 조언을 줄 ‡ .
† 벤치 마크는 Json.Net 5로, 현재 버전 (작성 중)은 10입니다. 사용 된 표준 .Net 직렬 변환기 버전은 언급되지 않았습니다.
이 테스트는 분명히 라이브러리를 유지 관리하는 개발자가 수행 한 것입니다. 나는 그들의 주장을 확인하지 않았다 . 의심스러운 경우 직접 테스트하십시오.
JavaScriptSerializer
및DataContractJsonSerializer
클래스 에서 제공하는 기본 제공 지원과 어떻게 다릅니 까?