如何使用C#将对象序列化为.NET 2.0中的JSON?
答案 0 :(得分:11)
您可以使用ASP.NET Ajax 1.0中的JavaScriptSerializer类,它与.NET 2.0兼容。
答案 1 :(得分:10)
您是否尝试过JSON.net?
答案 2 :(得分:1)
JSON.org引用了许多语言的许多序列化程序,包括C#中的六个以上。您应该能够找到符合您的API和许可需求的产品,包括JSONsharp和LGPL许可以及精心设计的Json.NET。
如果您要序列化的内容相当简单,那么为特定目的编写自己的内容并不是那么难。 JSON.org网站具有语法,而且非常简单。
答案 3 :(得分:1)
您是否尝试在.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();
}
}
}
答案 4 :(得分:1)
我能够通过一些小的改动将Mono的System.Json实现向后移植到C#2.0。
您需要here中的6个文件,或者只需从here下载我的C#2.0项目。
请注意,使用System.Json,您必须手动序列化任何非基本数据类型。 (见here)
答案 5 :(得分:-1)
我在下面的代码中使用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<LogDetails> lstLogdetails;
DAL objDAL = new DAL();
lstLogdetails = objDAL.GetLog("ALL", objSubLog);
return lstLogdetails.ToJSON();
}