首页 文章

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

提问于
浏览
59

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

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

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

4 回答

  • 3

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

  • 39

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

  • 27

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

    .NET4有一个内置的JSON类,比如DataContractJsonSerializer,但它非常弱,它不支持多维数组 . 我建议你使用JSON.Net

相关问题