Fastjson JSONPath
1. Pengenalan kepada versi JSONPath
fastjson selepas 1.2.0 menyokong JSONPath. Ini adalah ciri yang sangat berkuasa yang boleh digunakan sebagai Bahasa Pertanyaan Objek (OQL) dalam rangka kerja Java.
2
Adalah disyorkan untuk cache objek JSONPath, yang boleh meningkatkan prestasi penilaian. sintaks sokongan
nombor Akses kumpulan, di mana nombor adalah nombor, Boleh menjadi nombor negatif. Contohnya, $[0].leader.departments[-1].nameBerbilang elemen tatasusunan diakses, dengan num ialah nombor, yang boleh nombor negatif, dan mengembalikan nombor dalam tatasusunan Pelbagai elemen. Contohnya, $[0,3,-2,5]
[start:end] | akses julat tatasusunan, di mana permulaan dan akhir ialah jadual kecil permulaan dan subskrip berakhir, yang boleh menjadi nombor negatif dan pulangan berbilang nombor dalam elemen tatasusunan. Sebagai contoh, $[0:5] |
[start:end :step] | akses julat tatasusunan, di mana permulaan dan akhir ialah jadual kecil permulaan dan subskrip penamat, yang boleh menjadi nombor negatif ialah langkah saiz, dan mengembalikan Elemen Berbilang. Contohnya $[0:5:2] |
[?(key)] | Penapisan atribut objek, contohnya $.departs[?(nama)] |
[key > | nilai berangka Jenis penapisan perbandingan atribut objek, contohnya $.departs[id >= 123], sokongan operator perbandingan =,!=,>,>=,<,<= |
[kunci = '123' [ kunci seperti 'aa%'] | Jenis rentetan seperti penapisan, | contohnya $.departs[nama seperti 'sz*'], wildcard hanya menyokong %
[key rlike ' regexpr'] | |
Sintaks biasa ialah sintaks biasa jdk, menyokong bukan rlike | |
IN penapisan, menyokong jenis rentetan dan berangka | Contohnya:$.departs[name in ('wenshao','Yako')] | $.departs[id not in (101,102)]
[kunci antara 234 dan 456] | ANTARA penapisan, menyokong jenis angka, menyokong bukan antara |
$.berlepas1]1 dan bukan | panjang() Atau saiz() |
. | akses hartanah, seperti $.name|
.. | .. |
* Semua sifat objek, seperti $.leader.* | |
akses hartanah. Contohnya $['name'] | |
Akses berbilang atribut. Contohnya $['id','name'] |
$[ -1] | Elemen terakhir |
$[:-2] | 1 hingga 2 hingga terakhir |
$[1:] | Semua elemen selepas yang ke-2 | .
Baca atribut berbilang elemen dalam set | $['store']['book'][0]['title'] |
5.3 Contoh 3 | Kembalikan berbilang elemen dalam set |
Contoh set ulangan 5.4
Kembalikan subset koleksi melalui penapisan bersyarat
List<Entity> entities = new ArrayList<Entity>(); entities.add(new Entity("wenshao")); entities.add(new Entity("ljw2083")); entities.add(new Entity("Yako")); List<Entity> result = (List<Entity>)JSONPath.eval(entities, "[1,2]"); // 返回下标为1和2的元素 Assert.assertEquals(2, result.size()); Assert.assertSame(entities.get(1), result.get(0)); Assert.assertSame(entities.get(2), result.get(1));
List<Entity> entities = new ArrayList<Entity>(); entities.add(new Entity("wenshao")); entities.add(new Entity("ljw2083")); entities.add(new Entity("Yako")); List<Entity> result = (List<Entity>)JSONPath.eval(entities, "[0:2]"); // 返回下标从0到2的元素 Assert.assertEquals(3, result.size()); Assert.assertSame(entities.get(0), result.get(0)); Assert.assertSame(entities.get(1), result.get(1)); Assert.assertSame(entities.get(2), result.get(1));
List<Entity> entities = new ArrayList<Entity>(); entities.add(new Entity(1001, "ljw2083")); entities.add(new Entity(1002, "wenshao")); entities.add(new Entity(1003, "yakolee")); entities.add(new Entity(1004, null)); List<Object> result = (List<Object>) JSONPath.eval(entities, "[id in (1001)]"); Assert.assertEquals(1, result.size()); Assert.assertSame(entities.get(0), result.get(0));