2
ObjectMapper mapper = new ObjectMapper();
ObjectNode object = mapper.readValue("{\"myjson\":\"string\"}", ObjectNode.class);
HttpResponse<JsonNode> postResponse = Unirest.post("")
    .header("accept", "application/json")
    .body(object)
    .asJson();

在对正文的调用上导致标题中的运行时异常。我不确定在这里做什么,我正在尝试将 json 字符串包装在 JsonNode 对象中,我认为这是通过 unirest 接口(在数据主体中)发送时的正常过程。

4

3 回答 3

1

我不认为你可以那样做。您不能将 ObjectNode 传递给 body 方法。您可以为该类型实现自定义 ObjectMapper。但我不认为这是你想要的。

也许你可以做这样的事情:

.header("Content-Type", "application/json")
.body(mapper.writeValueAsString(object))
于 2016-05-18T17:25:09.813 回答
1

根据您需要设置 ObjectMapper的文档,例如

Unirest.config().setObjectMapper(new JacksonObjectMapper());

如果您已经根据需要配置了对象映射器,请将其传递给构造函数:

new JacksonObjectMapper(yourObjectMapper);

JacksonGson实现的对象映射器有单独的依赖项

于 2019-07-20T09:00:25.250 回答
0

查看body执行情况HttpRequestWithBody

public RequestBodyEntity body(Object body) {
    ObjectMapper objectMapper = (ObjectMapper) Options.getOption(Option.OBJECT_MAPPER);

    if (objectMapper == null) {
        throw new RuntimeException("Serialization Impossible. Can't find an ObjectMapper implementation.");
    }

    return body(objectMapper.writeValue(body));
}

ObjectMapper如果一个对象可用,似乎传递一个对象是可以的

于 2018-07-27T17:52:03.110 回答