【问题标题】:How to group certain fields of a class in one JSON and the other fields in another JSON如何在一个 JSON 中对类的某些字段进行分组,在另一个 JSON 中分组其他字段
【发布时间】:2016-10-20 12:55:16
【问题描述】:

我正在使用jackson 为我的REST 网络服务创建JSON

我有一个像下面这样的课程-

Foo 类 -

   public class Foo extends Bar {
       private String id;
       private String name;
       private List<Test> testing;
   }

酒吧类-

   public class Bar {
      private String username;
   }

测试类 -

   public class Test {
      private String id;
      private String desc;
   }

我想要的 JSON 输出如下 -

{
  "username" : "ABC",
  "data": {
           "id" : "123".
           "name" : "XYZ"
           }
  "testing" : [
                {
                  "id" : "test1",
                  "desc" : "description1"
                }
              ]
}

我尝试了所有可能的 annotations 并希望避免创建 Wrapper 类只是为了以某种格式创建 JSONFoo 类是使用 getter 和 setter 从数据库中填充的。

注意 - 我是 jackson 的新手

【问题讨论】:

  • 不清楚你在问什么。您是否想要与您发布的内容相似的 JSON,并且需要创建能够生成该内容的类?
  • 我想从 Foo 类中获取 JSON 输出。

标签: java json annotations jackson


【解决方案1】:

我建议创建一个包装类比尝试任何其他方法来解决问题更容易。 您可以创建一个包装类来获取输入,例如:

public class WrapperClasss {

private String val;

public String getVal() {
    return val;
}
public void setVall(String val) {
    this.val = val;
}   
}

那么你的代码可以是这样的:

@Path("/path")
public class SomeWebService {
    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public ResponseObject getRegister(WrapperClasss wrapperClasss) {
        MainClass classs = new MainClass();
        ResponseObject responseObject = classs.someMethod(wrapperClasss.getVal());
        return responseObject;
    }

}

就是这样。 Response Object 这里只是一个包含您的输出的对象。这将由 Jackson 转换为 JSON。

public class ResponseObject{
    private String username;
    Data data;
    private List<Test> testing;

    //respective getter and setters
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-18
    相关资源
    最近更新 更多