63

.NET 4には、JSONデータをシリアル化/逆シリアル化するクラスが付属していますか?

  • JSON.NETなどのサードパーティライブラリがあることは知っていますが、.NETに直接組み込まれているものを探しています。

  • MSDNでデータコントラクトを見つけましたが、これはWCF用であり、WinformsやWPF用ではありません。

4

4 に答える 4

41

DataContractJsonSerializerクラスは、どこでも使用できます。これは単なる.netクラスであり、WCFに限定されません。ここここでそれを使用する方法の詳細情報。

于 2010-07-18T14:27:52.493 に答える
30

JavaScriptSerializerクラスがあります(ただし、アセンブリを参照する必要がありますが System.Web.Extensions、このクラスはWinForms / WPFアプリケーションで完全に正常に機能します)。また、DataContractJsonSerializerクラスがWCF用に設計されている場合でも、クライアントアプリケーションで正常に機能します。

于 2010-07-18T14:25:10.527 に答える
4

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;
    }
}
于 2017-11-24T00:51:24.270 に答える
0

.NET4にはDataContractJsonSerializerなどのJSONクラスが組み込まれていますが、非常に弱く、多次元配列をサポートしていません。JSON.Netを使用することをお勧めします

于 2018-11-01T11:50:25.930 に答える