在.NET 2.0中序列化为JSON

如何使用C#将对象序列化为.NET 2.0中的JSON?

您可以使用ASP.NET Ajax 1.0中的JavaScriptSerializer类,它与.NET 2.0兼容。

你试过JSON.net吗?

JSON.org引用了许多语言的许多序列化程序,包括C#中的六个以上。 您应该能够找到符合您的API和许可需求的产品,包括带有LGPL许可证的JSONsharp和精心设计的Json.NET 。

如果您要序列化的内容相当简单,那么为特定目的编写自己的内容并不困难。 JSON.org网站具有语法,而且非常简单。

您是否尝试在.NET端构建RPC服务器? 如果是这样看看Jayrock(jayrock.berlios.de)。 你得到源代码,它将在2.0下编译。

设置RPC服务器也很简单:

using Jayrock; using Jayrock.JsonRpc; using Jayrock.JsonRpc.Web; using Jayrock.Json; using Jayrock.Json.Conversion; namespace myRPCService { [JsonRpcService("Service")] public class Service : JsonRpcHandler { [JsonRpcMethod("call", Idempotent = true)] public string call(string value) { JsonObject oJSON = JsonConvert.Import(typeof(JsonObject), value) as JsonObject; ... return oJSON.ToString(); } } } 

我能够通过一些小的改动将Mono的System.Json实现向后移植到C#2.0。

你需要6个文件,或者你可以从这里下载我的C#2.0项目。

请注意,使用System.Json,您必须手动序列化任何非基本数据类型。 (见这里 )

我使用下面的代码来获取JSON消息并且对我很有用。

 public static class JSONHelper { public static string ToJSON(this object obj) { JavaScriptSerializer serializer = new JavaScriptSerializer(); return serializer.Serialize(obj); } } 

在WCF中调用JSON序列化程序。

 [OperationContract] [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json)] public string LoadDetails() { LogDetails objSubLog = new LogDetails (); List lstLogdetails; DAL objDAL = new DAL(); lstLogdetails = objDAL.GetLog("ALL", objSubLog); return lstLogdetails.ToJSON(); }