2016-10-27 4 views
-1

Я использую OpenFeign/симулировать для отправки запросов API:Автоматически закодировать запрос объекта тела в JSON

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.***[email protected] 
[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)) 
+0

«@ Produces» аннотация в JAX-RS существует по причине –

ответ

-1

Вы можете попробовать

def feignJson = JsonSlurper.toJson(feignObject) 

, а затем, необязательно

def pretyJsonOutput = JsonOutput.prettyPrint(feignJson) 

проверки детали: http://groovy-lang.org/json.html

Смежные вопросы