代码之家  ›  专栏  ›  技术社区  ›  Cheung

.NET 4是否有内置的JSON序列化程序/反序列化程序?

  •  59
  • Cheung  · 技术社区  · 15 年前

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

    • 我知道有第三方图书馆,比如 JSON.NET 但是我正在寻找一个内置在.NET中的东西。

    • 我发现 Data Contracts 在msdn上,但它是用于wcf,而不是用于winforms或wpf。

    4 回复  |  直到 7 年前
        1
  •  39
  •   Coding Flow    15 年前

    你可以使用 DataContractJsonSerializer 类,它只是一个.NET类,不限于WCF。有关如何使用它的详细信息 here here .

        2
  •  27
  •   Darin Dimitrov    15 年前

    这里有 JavaScriptSerializer 类(尽管您需要引用 System.Web.Extensions 汇编这个类在winforms/wpf应用程序中工作得非常好)。即使 DataContractJsonSerializer 类是为WCF设计的,它在客户端应用程序中工作正常。

        3
  •  3
  •   vinsa    7 年前

    使用这个泛型类来序列化/反序列化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;
        }
    }
    
        4
  •  0
  •   user30150    7 年前

    .net4有一个内置的JSON类,如dataContractJSonserializer,但它非常弱,不支持多提及数组。我建议你使用json.net

    推荐文章