Мне нужно преобразовать строку в карту для следующей строки json в Java: обратите внимание, что в этой строке json содержится массив, и именно здесь я столкнулся с проблемой:
{
"type":"auth",
"amount":"16846",
"level3":{
"amount":"0.00",
"zip":"37209",
"items":[
{
"description":"temp1",
"commodity_code":"1",
"product_code":"11"
},
{
"description":"temp2",
"commodity_code":"2",
"product_code":"22"
}
]
}
}
Я пробовал паруспособов, указанных в ссылках ниже:
Преобразование строки JSON в карту - Джексон
Анализ JSONObject и создание HashMap
Я получаю ошибку:
Ошибка синтаксического анализатора JSON: Невозможно десериализовать экземпляр java.lang.String из маркера START_OBJECT ...};строка: 3, столбец: 20] (через цепочку ссылок: java.util.LinkedHashMap ["level3"]) com.fasterxml.jackson.databind.JsonMappingException: Невозможно десериализовать экземпляр java.lang.String из маркера START_OBJECT
Таким образом, чтобы дать более подробную информацию о том, что я делаю с картой, эта карта будет преобразована обратно в строку json, используя следующий метод:
public static String getJSON(Object map) throws IOException {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
OutputStream stream = new BufferedOutputStream(byteStream);
JsonGenerator jsonGenerator = objectMapper.getFactory().createGenerator(stream, JsonEncoding.UTF8);
objectMapper.writeValue(jsonGenerator, map);
stream.flush();
jsonGenerator.close();
return new String(byteStream.toByteArray());
}