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(ES20xx),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^


コメント