【问题标题】:Serialize to JSON in .NET 2.0在 .NET 2.0 中序列化为 JSON
【发布时间】:2009-06-29 00:56:50
【问题描述】:

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

【问题讨论】:

  • 这个问题有答案吗?是否需要赏金才能获得?

标签: c# json


【解决方案1】:

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

【讨论】:

  • 宁愿不安装该框架,因为我没有使用 ASP.NET AJAX 控件。我们使用 jQuery
  • 这是一个服务器端类。您不必使用客户端代码来使用该类。
  • 是的,我知道。因为我们没有 .NET 3.5,你可能已经把我卖了
  • 我在哪里可以得到这个程序集?我想我得先安装 AJAX 1.0 然后去抢吧?
  • 你是说使用 AjaxControlToolkit.dll 吗?
【解决方案2】:

你试过JSON.net吗?

【讨论】:

  • 想要像在 .NET 3.5 中那样创建一个辅助方法,显然我没有 Scott 在这里提到的库,但我想自己动手。我想这说起来容易做起来难:weblogs.asp.net/scottgu/archive/2007/10/01/…
  • 在工作中我们被 .net 2.0 困住了,我使用 json.net,效果很好。
【解决方案3】:

JSON.org 引用了多种语言中的许多序列化程序,包括 C# 中的六种以上。您应该能够找到满足您的 API 和许可需求的一种,包括具有 LGPL 许可的 JSONsharp 和精心设计的 Json.NET

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

【讨论】:

  • 不能使用 Json.NET,它需要 .NET 3.5 SP1。
  • JSONsharp 应该是你想要的。它是 LGPL,包含源代码,具有获取对象并将其序列化的选项,并且只需要 .Net 2.0。
【解决方案4】:

您是否尝试在 .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();
        }
    }
}

【讨论】:

  • 只是试图通过调用我们的 .ashx 页面返回 JSON
【解决方案5】:

我能够将 Mono 的 System.Json 实现反向移植到 C# 2.0,只需进行一些小的更改。

您需要来自here 的 6 个文件,或者您可以直接从here 下载我的 C# 2.0 项目。

请注意,使用 System.Json,您必须手动序列化任何非原始数据类型。 (见here

【讨论】:

    【解决方案6】:

    我将以下代码用于 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();
    }
    

    【讨论】:

    • 这非常有用,因为我无法使用最新版本的 Json.NET,因为存在与旧版 Sitecore 的依赖关系。
    • JavaScriptSerializer 不适用于 .NET 2.0 msdn.microsoft.com/en-us/library/…
    • JavaScriptSerializer 在 .net 2.0 中不可用
    猜你喜欢
    • 1970-01-01
    • 2010-09-23
    • 1970-01-01
    • 2010-09-28
    • 2010-12-28
    • 2015-11-01
    • 2018-02-08
    • 2017-04-11
    • 1970-01-01
    相关资源
    最近更新 更多