.NET 4には、JSONデータをシリアル化/逆シリアル化するクラスが付属していますか?
JSON.NETなどのサードパーティライブラリがあることは知っていますが、.NETに直接組み込まれているものを探しています。
MSDNでデータコントラクトを見つけましたが、これはWCF用であり、WinformsやWPF用ではありません。
.NET 4には、JSONデータをシリアル化/逆シリアル化するクラスが付属していますか?
JSON.NETなどのサードパーティライブラリがあることは知っていますが、.NETに直接組み込まれているものを探しています。
MSDNでデータコントラクトを見つけましたが、これはWCF用であり、WinformsやWPF用ではありません。
DataContractJsonSerializerクラスは、どこでも使用できます。これは単なる.netクラスであり、WCFに限定されません。こことここでそれを使用する方法の詳細情報。
JavaScriptSerializerクラスがあります(ただし、アセンブリを参照する必要がありますが System.Web.Extensions
、このクラスはWinForms / WPFアプリケーションで完全に正常に機能します)。また、DataContractJsonSerializerクラスがWCF用に設計されている場合でも、クライアントアプリケーションで正常に機能します。
JSONをシリアル化/逆シリアル化するには、このジェネリッククラスを使用します。次のような複雑なデータ構造を簡単にシリアル化できます。
Dictionary<string, Tuple<int, int[], bool, string>>
JSON文字列に変換し、アプリケーション設定などに保存します
public class JsonSerializer
{
public string Serialize<T>(T aObject) where T : new()
{
T serializedObj = new T();
MemoryStream ms = new MemoryStream();
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
ser.WriteObject(ms, aObject);
byte[] json = ms.ToArray();
ms.Close();
return Encoding.UTF8.GetString(json, 0, json.Length);
}
public T Deserialize<T>(string aJSON) where T : new()
{
T deserializedObj = new T();
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(aJSON));
DataContractJsonSerializer ser = new DataContractJsonSerializer(aJSON.GetType());
deserializedObj = (T)ser.ReadObject(ms);
ms.Close();
return deserializedObj;
}
}
.NET4にはDataContractJsonSerializerなどのJSONクラスが組み込まれていますが、非常に弱く、多次元配列をサポートしていません。JSON.Netを使用することをお勧めします