Как преобразовать JsonNode в ObjectNode
У меня есть объект com.fasterxml JsonNode
с некоторыми данными. Мне нужно сделать некоторые манипуляции с его данными. Я googled для ответа, но не получил его должным образом. Можете ли вы предложить мне, как манипулировать данными JsonNode.
Я также попытался преобразовать JsonNode
в ObjectNode
следующим образом
ObjectNode objectNode = (ObjectNode)filterJson;
но это дает следующее исключение....
java.lang.ClassCastException: com.fasterxml.jackson.databind.node.TextNode cannot be cast to
com.fasterxml.jackson.databind.node.ObjectNode
пожалуйста, помогите!!
Ответы
Ответ 1
Наконец, я получил решение следующим образом:
JsonNode jsonNode = Json.toJson("Json String");
ObjectNode node = (ObjectNode) new ObjectMapper().readTree(jsonNode.asText());
//perform operations on node
jsonNode = (JsonNode) new ObjectMapper().readTree(node.toString());
или другой, как показано ниже...
ObjectNode node = (ObjectNode) new ObjectMapper().readTree("Json String")
//perform operations on node
jsonNode = (JsonNode) new ObjectMapper().readTree(node.toString());
но я не знаю, хороший ли это подход или нет?
Если есть что-то лучше, чем указано выше, пожалуйста, дайте мне знать.
Спасибо!
Ответ 2
Вы можете конвертировать JsonNode
в ObjectNode
простым способом:
ObjectNode objectNode = jsonNode.deepCopy();
Доступно с Jackson 2.0 и протестировано с Jackson 2.4.0
Ответ 3
У меня тоже была эта ошибка, хотя в моем случае это была глупая ошибка.
Я случайно импортировал org.codehaus.jackson.node.ObjectNode
вместо com.fasterxml.jackson.databind.node.ObjectNode
.
Использование Джексона ObjectNode исправило проблему.
Ответ 4
Я пробую это несколько раз, все будет хорошо! Вы определяете только Student Class
для сопоставления свойств. Затем вы можете преобразовать объект jsonNode
в Student
.
Student student = objectMapper.convertValue(jsonNode1, Student.class);
Я думаю, что это будет подходящим для ваших нужд!