JavaのライブラリjacksonでJsonNodeの値が配列の場合にString型のListに変換する方法
JSONのvalueが配列の場合があると思います。
{ "key1":{ "id":20, "name":"takahashi" }, "key2":["val1", "val2"] // このvalueをJsonNodeからList<String>に変換 }
StreamSupport.stream()
メソッドを使用してList<String>型に変換することができます。
streamメソッドの引数は以下です。
第一引数 | 第二引数 |
---|---|
Spliterator<T> | boolean |
第一引数にはJsonNodeのspliterator()
メソッドを渡します。第二引数は、パラレルで処理しない場合はfalseです。
String json = "{~~~// 省略}"; JsonNode root = mapper.readTree(json); var arrays= root.get("key2"); List<String> lists = StreamSupport.stream(arrays.spliterator(), false) .map( e -> { return e.asText(); // Stringに変換 }) .collect(Collectors.toList()); // 注
注:Java16から以下メソッド追加されました。
.collect(Collectors.toList());
↓
.toList();

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント