假设我有一个包含JSON数据的InputStream,并且我希望将它转换为一个Map(键值对),例如,我可以将它写入一个日志文件。
获取InputStream并将其转换为地图的最简单方法是什么?
public String convertInputStreamToMap(InputStream isobj) {
// ???
}
我尝试过转换为String,它可以像预期的那样工作,但是当数据真的很长时,数据将是不完整的。所以我想要一些最简单的方法直接把这个转换成Map。
发布于 2019-07-24 03:15:09
使用ObjectMapper
从com.fasterxml.jackson.databind
直接将输入流转换为Map:例如:
objectMapper.readValue(is, Map.class);
发布于 2019-07-24 03:19:19
groovy中有一个内置类来解析json:groovy.json.JsonSlurper。
它有parse
方法,它几乎接受任何源,包括InputStream。
def url = 'https://httpbin.org/get'.toURL()
def json = url.withInputStream{inputStream->
new groovy.json.JsonSlurper().parse(inputStream)
}
println json.headers
如果您想将InputStream转换为String,groovy提供了使用InputStream类的其他方法:https://docs.groovy-lang.org/latest/html/groovy-jdk/java/io/InputStream.html
下面的代码使用指定的字符集读取此InputStream的内容,并将其作为字符串返回。
String s = inputStream.getText("UTF-8")
https://stackoverflow.com/questions/57181475
复制