Как получить список элементов JSON, начинающихся с определенной буквы, из объекта JsonNode?
Я пытаюсь разобрать JsonNode
объект, чтобы получить список элементов, которые начинаются с "s" из JsonNode
объект.
мой JSON
:
{"Result":[
{
"user_name":"jack",
"email":"admin@gmail.com",
"Phone":"111111111",
"s_update":"2019-06-06 11:40:38",
"s_created_on":"2019-06-02 17:40:38",
"s_created_by":"admin",
"s_id":"ad9db8a330091c2e1bb4b961935"
}
]}
Ожидаемый результат:
{s_created_on=2019-06-02 17:40:38,s_created_by=admin,
s_id=ad9db8a330091c2e1bb4b961935}
Есть идеи, как правильно сделать это?
1 ответ
Вам просто нужно перебрать все элементы в JSON Array
и для каждого элемента переберите все поля. Если имя поля начинается с s
убери это. Смотрите ниже пример:
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.Map.Entry;
public class Test {
public static void main(String[] args) throws IOException {
File jsonFile = new File("./src/main/resources/test.json");
ObjectMapper jsonMapper = new ObjectMapper();
ObjectNode root = (ObjectNode) jsonMapper.readTree(jsonFile);
ArrayNode result = (ArrayNode) root.get("Result");
for (JsonNode node : result) {
Iterator<Entry<String, JsonNode>> fields = node.fields();
while (fields.hasNext()) {
Entry<String, JsonNode> next = fields.next();
if (!next.getKey().startsWith("s")) {
fields.remove();
}
}
}
System.out.println(result);
}
}
Над кодом печатает:
[{"s_update":"2019-06-06 11:40:38","s_created_on":"2019-06-02 17:40:38","s_created_by":"admin","s_id":"ad9db8a330091c2e1bb4b961935"}]