JSON の部分的な抽出

JSONのパス区切り文字を "." ピリオド、配列を [0], [1] ~の書式で
指定していJSONの該当パス部分のみを抽出したい。

GitHub - yipuran/yipuran-jack: Jackson Java JSON-processorを使用する時の補助を目的したライブラリ

ここで、作った org.yipuran.json.JsonNodeParse
を使えば簡単に求められる。

この yipuran-jack : JsonNodeParse に、バグもあったので修正もした。
version 1.2 → 1.3


JSON部分の抽出サンプル
data → Aの下 → B配列 3番目 → C というパスで抽出

import org.yipuran.json.JsonNodeParse;
import com.fasterxml.jackson.databind.JsonNode;
JsonNodeParse parse = new JsonNodeParse();

// JsonNode を求めてからJSON-Path を指定して該当JsonNode を求める
JsonNode node = parse.readTree(json);

JsonNode part = parse.nodeStream(node)
               .filter(e->e.getKey().equals("data.A.B[2].C"))
               .findFirst().orElseThrow(()->new RuntimeException("No such JSON path"))
               .getValue();

// TODO part を toString() でJSON文字列

JsonNode を求めれば、あとはこれを参照するだけだ