Я получаю разные типы возвращаемых данных при использовании функции чтения и сопоставления при запросах примитивов. Например, при запросе строки при использовании JacksonJsonNodeJsonProvider
,
- функция чтения возвращает объект типа - com.faster xml .jackson.databind.node.TextNode
- объект, переданный в MapFunction: - java .lang.String
пример кода -
static void test(){
String json = "{\"store\":{\"book\":{\"color\":\"blue\",\"price\":5},\"bicycle\":{\"color\":\"red\",\"price\":19.95}}}";
Configuration config = Configuration.builder()
.jsonProvider(new JacksonJsonNodeJsonProvider())
.build();
DocumentContext document = JsonPath.using(config).parse(json);
JsonPath path = JsonPath.compile("$.store.book.color");
Object o = document.read(path);
System.out.println(o);
System.out.println(o.getClass());
MapFunction mapFunction = (object, configuration) -> {
System.out.println(object);
System.out.println(object.getClass());
return object;
};
document.map(path, mapFunction);
document.map("$.store.book", mapFunction);
}
, который возвращает
"blue"
class com.fasterxml.jackson.databind.node.TextNode
blue
class java.lang.String
{"color":"blue","price":5}
class com.fasterxml.jackson.databind.node.ObjectNode
Есть ли Speci c причина того же? Как я могу получить объект типа JsonNode при использовании функции карты также?