【问题标题】:JSON, JS to Java and Vice Versa, and other languagesJSON, JS to Java and Vice Versa, 和其他语言
【发布时间】:2009-12-12 03:21:40
【问题描述】:

我想使用 JSON 来表示 JS 对象将它们发送到 Java 程序,反之亦然。 我也想为其他语言做这个。 C# 到 Java 可能吗?

我用什么来做到这一点? (不确定是指序列化还是数据绑定)

编辑: Java 对象一旦用 JSON 表示,是否意味着 JavaScript 可以对其进行解析并转换为对应的 JavaScript 对象?

【问题讨论】:

  • JSON 库?还是我错过了什么?
  • 感谢大家的回答。在我选择了一个图书馆之后,我应该能够做到这一点。通过阅读您的 cmets,我可以看到我的主要问题是我没有考虑我在做什么正确。

标签: java javascript json serialization


【解决方案1】:

我建议为此使用Gson。它的优点是它很好地支持泛型和嵌套bean,而且速度也足够快。我在这里发布了一个 Gson#fromJson() 示例,它将一个相当复杂的 JSON 字符串转换为 Java:Converting JSON to Java

Gson#toJson() 将任何有效的类 Javabean 对象转换为 JSON 基本上是小菜一碟:

String json = new Gson().toJson(object);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(json);

编辑:一旦 Java 对象以 JSON 表示,这是否意味着 JavaScript 可以解析它并将其转换为相应的 JavaScript 对象?

当然,您可以像访问 JS 对象一样访问它们。如果您也是在 JS 中使用 JSON 的新手,那么我可以推荐这个启动教程:http://www.hunlock.com/blogs/Mastering_JSON_%28_JavaScript_Object_Notation_%29

【讨论】:

    【解决方案2】:

    您可以使用 Google Web Toolkit 在 javascript 和 Java 之间共享对象。使用 GWT,您可以用 Java 编写所有代码,然后 GWT 编译器将处理从 javascript 到 Java 的 RPC 调用的序列化,反之亦然。

    【讨论】:

    • 如果所有 OP 需要的只是简单的 JSON 序列化和反序列化,那么 GWT 就太过分了。
    • 不一定。 GWT 抽象出所有的序列化和反序列化。我实际上会提出完全相反的观点。 GWT 似乎是在 javascript 和 java 之间传递对象的一个​​非常非常简单的解决方案。
    【解决方案3】:

    如果您的意思是通过某种连接(网络、本地管道等),则称为数据序列化。您将使用库来编码您的对象。 json.org 有一个库列表,可以做你想做的事。

    如果你正在编写一个带有 JS 前端的 Java 服务器,也总是有 GWT(我从未使用过,但听说过很好)

    【讨论】:

      【解决方案4】:

      要从 JSON 到 Java 中的对象,我听说 json-simple 效果很好。它将 JSON 映射到 Java Map,其中可以包含 String、Numbers、Lists 和其他 Map。这比其他一些库要简单一些,它们直接映射到您需要创建以表示 JSON 的 Java 对象。

      有关包括 Java 和 C# 在内的大多数主要语言的 JSON 库的详尽列表,请查看json.org

      【讨论】:

        【解决方案5】:

        为了序列化 javascript 对象以传输到服务器,我使用了https://github.com/douglascrockford/JSON-js/blob/master/json2.js。非常好和容易。

        为了让 JSON 数据进出 java,我发现这个库非常简单: http://json-lib.sourceforge.net/

        从 JSON 创建 javascript 对象不是问题。 JSON 是有效的 JavaScript。您可以简单地在其上运行 eval,或使用 javascript 库,它可能提供一些 eval 所没有的内置安全性。

        【讨论】:

          猜你喜欢
          • 2022-12-02
          • 1970-01-01
          • 1970-01-01
          • 2023-04-03
          • 1970-01-01
          • 1970-01-01
          • 2011-04-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多