Вы всегда можете прочитать документ JSON как объект JsonNode
с помощью Jackson API (не нужно создавать POJO). Далее, есть несколько способов чтения и манипулирования данными, представленными как JsonNode
объект. Одним из наиболее удобных способов, доступных в Java 8+, является создание java.util.Stream<JsonNode>
и сбор окончательного списка в результате сопоставления от JsonNode
до String
, где String
представляет значение node.txId
поле.
Вы можете создать java.util.Stream<JsonNode>
с помощью :
java.util.stream.StreamSupport.stream(jsonNode.spliterator(), false)
и затем вы можете позвонить map(node -> node.get("txId").textValue()
и, наконец, позвонить collect()
, чтобы завершить поток и получить ожидаемый результат.
Рассмотрим следующий код в качестве примера (требуется Java 8+):
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.StreamSupport;
final class JacksonReadExample {
public static void main(String[] args) throws IOException {
final String json = " [\n" +
" {\n" +
" \"txId\": \"ffff-001\",\n" +
" \"sender\" : \"0xwwwwwww\",\n" +
" \"recepient\" : \"0xeferfef\"\n" +
" },\n" +
" {\n" +
" \"txId\": \"ffff-002\",\n" +
" \"sender\" : \"0xwwwwwww\",\n" +
" \"recepient\" : \"0xeferfef\"\n" +
" }\n" +
"]";
final ObjectMapper mapper = new ObjectMapper();
final JsonNode jsonNode = mapper.readTree(json);
final List<String> ids = StreamSupport.stream(jsonNode.spliterator(), false)
.map(node -> node.get("txId").textValue())
.collect(Collectors.toList());
System.out.println(ids);
}
}
Выход:
[ffff-001, ffff-002]