我正在尝试为应用程序/ x-www-form-urlencoded和字符串有效负载以及其他应用程序/ json格式与json主体创建2个服务的资源。将ByteArrayOutputStream转换为Kotlin中的json
我有这样的代码:
@POST @Path("/test")
fun test(@Context request: ContainerRequest): Response {
val baos = ByteArrayOutputStream()
request.entityStream.use { it.copyTo(baos) }
val ipnRawData = baos.toString()
var map : Map<String,Any>
map = when (request.headers.getFirst("Content-Type")) {
"application/json" -> objectMapper.convertValue(ipnRawData,Map::class.java) as Map<String,Any>
"application/x-www-form-urlencoded" -> LinkedHashMap()
else -> throw UnsupportedOperationException()
}
//....handle the map
return Response.status(200).build()
}
但是,当我尝试使用JSON选项运行它,和身体:{"name" :"test"}
),我得到一个错误:
"java.lang.IllegalArgumentException: Can not construct instance of java.util.LinkedHashMap: no String-argument constructor/factory method to deserialize from String value ('{ "name" :"test"}')"
感谢您的帮助,Yoel
感谢您的详细解答和有用的提示! – Joel