【问题标题】:Sending JSON with arbitrary key values using REST service (Jersey/Jackson)使用 REST 服务 (Jersey/Jackson) 发送带有任意键值的 JSON
【发布时间】:2013-04-10 21:50:12
【问题描述】:

我想把这样的东西从客户端发送到其他服务

jsonObj = { “信息”:{ “field1”:“val1”.. ...... “字段N”:“valN”.. } }

我不确定如何使用休息服务来处理这个问题

 Java 中的 Jersey 和 Jackson 

我不想使用带有 N 字段的 Jackson 属性来创建新的信息类,因为它们总是会改变。我只想获取 jsonObject 内部的 jsonObject 并将其作为 JsonObject 进行操作。

有什么想法吗?

【问题讨论】:

    标签: java rest jersey jackson


    【解决方案1】:

    假设您有一个正在读取结果的根对象,您可以在 jsonObj 中将 docInfo 定义为 Map<String, Object>。这可能会起作用,但我现在不能尝试。

    如果您没有根对象,您可以使用Map<String, Object> 作为您的根对象并从那里开始使用它。该 Map 可以包含嵌套 json 对象的其他映射。

    【讨论】:

      【解决方案2】:

      是的,按照@digitialjoel 的建议,使用带有嵌入地图的包装器对象。这是一个具体的例子:

      class DocInfo {
          private Map<String, Object> docInfo;
      
          public DocInfo() {
              super();
          }
      
          public DocInfo(final Map<String, Object> docInfo) {
              super();
              this.docInfo = docInfo;
          }
      
          // Getters, setters
      }
      
      final Map<String, Object> data = new LinkedHashMap<String, Object>(4);
      data.put("field1", "value1");
      data.put("field2", "value2");
      data.put("field3", "value3");
      data.put("field4", "value4");
      final DocInfo info = new DocInfo(data);
      final ObjectMapper mapper = new ObjectMapper();
      final String json = mapper.writeValueAsString(info);
      System.out.println(json);
      

      输出:

      {"docInfo":{"field1":"value1","field2":"value2","field3":"value3","field4":"value4"}}

      【讨论】:

        猜你喜欢
        • 2012-07-14
        • 1970-01-01
        • 1970-01-01
        • 2011-11-15
        • 2016-12-02
        • 2015-10-23
        • 2014-02-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多