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 を求めれば、あとはこれを参照するだけだ