.NET 4自带序列化/反序列化JSON数据的类吗?
我知道有第三方库,例如JSON.NET,但我正在寻找内置于.NET中的东西。
我在MSDN上找到了数据契约(Data Contracts),但它是为WCF而不是Winforms或WPF而设计的。
.NET 4自带序列化/反序列化JSON数据的类吗?
我知道有第三方库,例如JSON.NET,但我正在寻找内置于.NET中的东西。
我在MSDN上找到了数据契约(Data Contracts),但它是为WCF而不是Winforms或WPF而设计的。
您可以在任何地方使用DataContractJsonSerializer类,它只是一个 .net 类,不仅限于 WCF。有关如何使用它的更多信息,请查看此处和此处。
有 JavaScriptSerializer 类(虽然你需要引用 System.Web.Extensions
程序集,但该类在 WinForms/WPF 应用程序中运作良好)。即使 DataContractJsonSerializer 类是为 WCF 设计的,但它在客户端应用程序中也能正常工作。
Dictionary<string, Tuple<int, int[], bool, string>>
将其转换为 JSON 字符串,然后保存在应用程序设置中或其他地方。
public class JsonSerializer
{
public string Serialize<T>(T Obj)
{
using (var ms = new MemoryStream())
{
DataContractJsonSerializer serialiser = new DataContractJsonSerializer(typeof(T));
serialiser.WriteObject(ms, Obj);
byte[] json = ms.ToArray();
return Encoding.UTF8.GetString(json, 0, json.Length);
}
}
public T Deserialize<T>(string Json)
{
using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(Json)))
{
DataContractJsonSerializer serialiser = new DataContractJsonSerializer(typeof(T));
var deserializedObj = (T)serialiser.ReadObject(ms);
return deserializedObj;
}
}
}
WriteObject
抛出一个错误 - 这段代码会存在内存泄漏。最好将 MemoryStream 用 using 语句进行包装,例如 using (var ms = new MemoryStream()) { // 在这里编写代码 }
。 - PandaWood.NET4内置了一个JSON类,例如DataContractJsonSerializer,但它非常弱,不支持多维数组。我建议您使用JSON.Net。