4

我想从客户端发送这样的东西到休息服务

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

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

Java 中的泽西岛和杰克逊

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

有什么想法吗 ?

4

2 回答 2

7

假设您有一个正在读取结果的根对象,您可以Map<String, Object>在 jsonObj 中将 docInfo 定义为 a。这可能会奏效,但我目前无法尝试。

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

于 2013-04-10T22:04:54.937 回答
3

是的,正如@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"}}

于 2013-04-10T22:29:04.520 回答