最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用fastjson中的JSONPath處理json數(shù)據(jù)的方法

 更新時(shí)間:2020年04月29日 11:18:02   作者:stone想靜靜  
這篇文章主要介紹了使用fastjson中的JSONPath處理json數(shù)據(jù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

介紹

fastjson 1.2.0之后的版本支持JSONPath。,可以在java框架中當(dāng)作json對(duì)象查詢語(yǔ)言(OQL)來(lái)使用。

常用API

public class JSONPath {   
  // 求值,靜態(tài)方法
  public static Object eval(Object rootObject, String path);

  // 求值,靜態(tài)方法,按需計(jì)算,性能更好
  public static Object extract(String json, String path);
  
  // 計(jì)算Size,Map非空元素個(gè)數(shù),對(duì)象非空元素個(gè)數(shù),Collection的Size,數(shù)組的長(zhǎng)度。其他無(wú)法求值返回-1
  public static int size(Object rootObject, String path);
  
  // 是否包含,path中是否存在對(duì)象
  public static boolean contains(Object rootObject, String path) { }
  
  // 是否包含,path中是否存在指定值,如果是集合或者數(shù)組,在集合中查找value是否存在
  public static boolean containsValue(Object rootObject, String path, Object value) { }
  
  // 修改制定路徑的值,如果修改成功,返回true,否則返回false
  public static boolean set(Object rootObject, String path, Object value) {}

  // 在數(shù)組或者集合中添加元素
  public static boolean arrayAdd(Object rootObject, String path, Object... values);
  
  // 獲取,Map的KeySet,對(duì)象非空屬性的名稱。數(shù)組、Collection等不支持類(lèi)型返回null。
  public static Set<?> keySet(Object rootObject, String path);
}

使用

準(zhǔn)備json內(nèi)容如下:


取值操作

Object rootName = JSONPath.eval(json,"$.name");
System.out.println(rootName);
Object rootArr = JSONPath.eval(json,"$.arr");
System.out.println(rootArr);

輸出:

zpl
[{"name":"zpl0","id":0},{"name":"zpl1","id":1},{"name":"zpl2","id":2},{"name":"zpl3","id":3},{"name":"zpl4","id":4}]

判斷操作

// 判斷有沒(méi)有id>2的內(nèi)容
boolean isExist = JSONPath.contains(json,"$[id>0]");
System.out.println(isExist);
// 判斷有沒(méi)有id>6的內(nèi)容
isExist = JSONPath.contains(json,"$[id>1]");
System.out.println(isExist);

輸出

true
false

size操作

int size = JSONPath.size(json,"$.arr");
System.out.println(size);

輸出

5

寫(xiě)到這里,api和表達(dá)式不可能一一列舉,所謂舉一反三,表達(dá)式列舉如下:

JSONPath 描述
$ 根對(duì)象,例如$.name
[num] 數(shù)組訪問(wèn),其中num是數(shù)字,可以是負(fù)數(shù)。例如$[0].leader.departments[-1].name
[num0,num1,num2...] 數(shù)組多個(gè)元素訪問(wèn),其中num是數(shù)字,可以是負(fù)數(shù),返回?cái)?shù)組中的多個(gè)元素。例如$[0,3,-2,5]
[start:end] 數(shù)組范圍訪問(wèn),其中start和end是開(kāi)始小表和結(jié)束下標(biāo),可以是負(fù)數(shù),返回?cái)?shù)組中的多個(gè)元素。例如$[0:5]
[start:end :step] 數(shù)組范圍訪問(wèn),其中start和end是開(kāi)始小表和結(jié)束下標(biāo),可以是負(fù)數(shù);step是步長(zhǎng),返回?cái)?shù)組中的多個(gè)元素。例如$[0:5:2]
[?(key)] 對(duì)象屬性非空過(guò)濾,例如$.departs[?(name)]
[key > 123] 數(shù)值類(lèi)型對(duì)象屬性比較過(guò)濾,例如$.departs[id >= 123],比較操作符支持=,!=,>,>=,<,<=
[key = '123'] 字符串類(lèi)型對(duì)象屬性比較過(guò)濾,例如$.departs[name = '123'],比較操作符支持=,!=,>,>=,<,<=
[key like 'aa%'] 字符串類(lèi)型like過(guò)濾,例如$.departs[name like 'sz*'],通配符只支持% 支持not like
[key rlike 'regexpr'] 字符串類(lèi)型正則匹配過(guò)濾,例如departs[name like 'aa(.)*'],正則語(yǔ)法為jdk的正則語(yǔ)法,支持not rlike
[key in ('v0', 'v1')] IN過(guò)濾, 支持字符串和數(shù)值類(lèi)型 例如: .departs[name in ('wenshao','Yako')] .departs[id not in (101,102)]
[key between 234 and 456] BETWEEN過(guò)濾, 支持?jǐn)?shù)值類(lèi)型,支持not between 例如: .departs[id between 101 and 201].departs[id not between 101 and 201]
length() 或者 size() 數(shù)組長(zhǎng)度。例如$.values.size() 支持類(lèi)型java.util.Map和java.util.Collection和數(shù)組
keySet() 獲取Map的keySet或者對(duì)象的非空屬性名稱。例如$.val.keySet() 支持類(lèi)型:Map和普通對(duì)象不支持:Collection和數(shù)組(返回null)
. 屬性訪問(wèn),例如$.name
.. deepScan屬性訪問(wèn),例如$..name

 對(duì)象的所有屬性,例如$.leader.*

['key'] | 屬性訪問(wèn)。例如['name']['key0','key1'] 多個(gè)屬性訪問(wèn)。例如['id','name']

更多內(nèi)容可參考github官網(wǎng):https://github.com/alibaba/fastjson/wiki/JSONPath

到此這篇關(guān)于使用fastjson中的JSONPath處理json數(shù)據(jù)的方法的文章就介紹到這了,更多相關(guān)JSONPath處理json數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

子洲县| 电白县| 滨海县| 阳高县| 衡南县| 高台县| 谢通门县| 英德市| 安新县| 湄潭县| 永川市| 漠河县| 桐城市| 武夷山市| 章丘市| 丹棱县| 宿州市| 鄂托克旗| 治县。| 佛山市| 阜新市| 兴宁市| 禹城市| 南宁市| 平潭县| 宁城县| 益阳市| 宕昌县| 清河县| 满洲里市| 玉溪市| 门头沟区| 安阳市| 昌平区| 铁岭市| 湖口县| 林州市| 北川| 邹城市| 洱源县| 措美县|