假设我有一个包含JSON数据的 InputStream ,并且我想将其转换为Map(键值对),例如,可以将其写入日志文件。
采用InputStream并将其转换为Map的最简单方法是什么?
public String convertInputStreamToMap(InputStream isobj) {
// ???
}
我尝试了转换为 String 的方法,该方法可以按预期工作,但是当数据真的很长时,数据将是不完整的。因此,我想要一种最简单的方法将其直接转换为Map。
答案 0 :(得分:0)
使用ObjectMapper
中的com.fasterxml.jackson.databind
将输入流直接转换为Map:
例如:
objectMapper.readValue(is, Map.class);
答案 1 :(得分:0)
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返回。
String s = inputStream.getText("UTF-8")