.NET 4有内置的JSON序列化器/解串器吗?

时间:2010-07-18 14:23:32

标签: .net json serialization jsonserializer

.NET 4是否附带任何序列化/反序列化JSON数据的类?

  • 我知道有第三方库,例如JSON.NET,但我正在寻找内置于.NET中的东西。

  • 我在MSDN上找到了Data Contracts,但它适用于WCF,而不适用于Winforms或WPF。

4 个答案:

答案 0 :(得分:39)

您可以在任何地方使用DataContractJsonSerializer类,它只是一个.net类,并不仅限于WCF。有关如何使用它的更多信息herehere

答案 1 :(得分:27)

JavaScriptSerializer类(尽管您需要引用System.Web.Extensions程序集,该类在WinForms / WPF应用程序中完美运行)。即使DataContractJsonSerializer类是为WCF设计的,它也可以在客户端应用程序中正常工作。

答案 2 :(得分:3)

使用此泛型类来序列化/反序列化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;
    }
}

答案 3 :(得分:0)

.NET4具有内置的JSON类,例如DataContractJsonSerializer,但它非常弱,不支持多维数组。我建议您使用JSON.Net