【问题标题】:Automatically encode request body object into JSON自动将请求正文对象编码为 JSON
【发布时间】:2016-10-27 10:09:19
【问题描述】:

我正在使用 OpenFeign/feign 发送 API 请求:

import feign.Body
import feign.Param
import feign.RequestLine

interface ApiServiceInterface {
    @RequestLine("POST /container/{cid}/key/bulk")
    @Body("{bulk}")
    public void bulk(@Param("cid") Long cid, @Param("bulk") Bulk bulk)
}

@Body("{bulk}") 不起作用,因为它将对象转换为字符串:

[ApiServiceInterface#bulk] ---> POST http://localhost:5050/container/11/key/bulk HTTP/1.1
[ApiServiceInterface#bulk] Content-Length: 45
[ApiServiceInterface#bulk] 
[ApiServiceInterface#bulk] com.***.tns.hoth.key.bulk.Bulk@5dd5fb75
[ApiServiceInterface#bulk] ---> END HTTP (45-byte body)

有没有办法自动将对象转换为 JSON 对象?

这就是我构建Feign.Builder的方式:

    def mapper = new ObjectMapper()
    mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"))
    mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
    mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE)
    mapper.readerForUpdating(this)

    return Feign.builder()
            .logger(new Logger.JavaLogger().appendToFile("logs/hoth.log"))
            .logLevel(Logger.Level.BASIC)
            .decoder(new JacksonDecoder(mapper))
            .encoder(new JacksonEncoder(mapper))

【问题讨论】:

  • @Produces JAX-RS 中的注释存在是有原因的

标签: java groovy jackson feign


【解决方案1】:

来自我们使用时OpenFeign的文档

@Body("{bulk}")
public void bulk(@Param("cid") Long cid, @Param("bulk") Bulk bulk)

Bulk对象toString()用于映射参数值。如果要将Bulk 对象转换为必要的json字符串,只需执行以下操作

public void bulk(@Param("cid") Long cid, @RequestBody Bulk bulk)

您不必添加@Body 注释。 希望这会有所帮助。

【讨论】:

    【解决方案2】:

    你可以试试

    def feignJson = JsonSlurper.toJson(feignObject)
    

    然后,可选地

    def pretyJsonOutput = JsonOutput.prettyPrint(feignJson)
    

    查看详情: http://groovy-lang.org/json.html

    【讨论】:

      猜你喜欢
      • 2015-08-23
      • 2023-04-02
      • 1970-01-01
      • 2018-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-12
      相关资源
      最近更新 更多