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をファイルにシリアル化する
どうして?ここだ共通serialisersだけでなく、ベンチマークテストの機能の比較が †‡。
以下は、リンクされた記事から取得したパフォーマンスのグラフです。
この別の投稿では、
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
クラスによって提供される組み込みサポートとどのように異なりますか?