【问题标题】:JSON to Objects in java?JSON到Java中的对象?
【发布时间】:2010-08-20 15:58:17
【问题描述】:

有谁知道是否有能力为 JSON 数据生成对象?我知道有通用 JSON 对象库,但我正在寻找更具体的 - 类似于 jaxb 如何将 SOAP 定义或 XSD 转换为对象模型。我知道需要某种 JSON 定义文件(我不知道 JSON 中是否存在这个概念),但我觉得这会更有益。想想:

一般情况:

genericJsonObect.get("name");

具体情况:

specificJsonObject.getName();

【问题讨论】:

    标签: java json


    【解决方案1】:

    Jackson 和 XStream 能够将 json 映射到 POJO。

    【讨论】:

      【解决方案2】:

      您希望为您生成 .java 源文件吗?还是将现有的 java bean 映射到 JSON 对象?

      如果是前者,则没有这样的库(我知道)如果后者,Google GSON 正是您所需要的。

      来自样本:

      class BagOfPrimitives {
          public int value1 = 1;
          private String value2 = "abc";
          private transient int value3 = 3;
          BagOfPrimitives() {
          // no-args constructor
          }
      }
      

      (序列化)

      BagOfPrimitives obj = new BagOfPrimitives();
      Gson gson = new Gson();
      String json = gson.toJson(obj); 
      System.out.println( json );
      

      打印

      {"value1":1,"value2":"abc"}
      

      (反序列化)

      BagOfPrimitives obj2 = gson.fromJson(json, BagOfPrimitives.class);   
      System.out.println( obj2.value1 ) ; // value1 is 1
      

      【讨论】:

      • 我希望有一种方法可以根据一些定义生成 pojo java 类。
      • 这并不是很难做到。实际上,对于一个小型开源项目来说,这将是一个不错的选择:)
      【解决方案3】:

      我认为Jackson 数据映射器可以满足您的需求。它可以将真实的Java对象序列化/反序列化成Json树。

      但其他 API 也应该可以工作:

      • 索条
      • FlexJSON
      • 格森

      【讨论】:

        【解决方案4】:

        我对这样的代码生成项目并不熟悉,尽管我相信很多 Java JSON 库项目都会对拥有这样的东西感兴趣。主要问题是 JSON 有很好的 Schema 语言,可以生成代码; JSON Schema 仅适用于验证。

        但是:您可以考虑的一种可能性是仅使用 JAXB 生成 bean,然后使用 Jackson 来使用这些 bean。它支持 JAXB 注释,因此您可以使用生成的 JSON 和 bean。

        【讨论】:

          【解决方案5】:

          我发现这个网站非常有用。

          http://jsongen.byingtondesign.com/ 并已在我们的项目中使用它。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-11-14
            • 1970-01-01
            • 1970-01-01
            • 2015-02-22
            • 1970-01-01
            相关资源
            最近更新 更多