JSONPath 입문 의 Snack 3 편

12883 단어
Snack3 for java
미니 JSON 프레임
jdk 8, 60kb 기반.직렬 화 된 반 직렬 화, 해석 과 전환, JSon path 조 회 를 지원 합 니 다.

  org.noear
  snack3
  3.1.5.9

Snack 3 차용증 Javascript 의 모든 변 수 는 var 에 의 해 설명 되 고 Xml dom 모든 것 이 Node 의 디자인 이다.그 아래 의 모든 데 이 터 는 ONodeONodeOne node 의 뜻 으로 모든 유형 을 대표 하고 모든 유형 으로 전환 할 수 있다.
  • 문서 트 리 의 조작 과 구축 능력 강조
  • 중간 매체 로 서 서로 다른 형식 으로 전환 하 는 데 편리 하 다
  • 고성능 Json path 조회 (호환성 과 성능 짱)
  • 지원
  • 오늘 이 걸 로 JSONPath 입 구 를 한번 해 보도 록 하 겠 습 니 다.
    JSONPath 문법 소개
  • 문자열 은 작은 따옴표 를 사용 합 니 다. 예: [name]
  • 여과 작업 은 빈 칸 막 이 로 구분 합 니 다. 예: [? (@. type = = 1)]
  • 지원 작업
    설명 하 다.$
    뿌리 원 소 를 나타 낸다@
    현재 노드 (필터 식 의 술어 로 사용)*
    통용 배합 부 호 는 이름 이나 숫자 를 표시 할 수 있다...
    심층 주사.재 귀적 검색 으로 이해 할 수 있다..
    자 노드['' (, '')]
    하나 이상 의 키 노드 를 표시 합 니 다.[ (, )]
    하나 이상 의 배열 아래 표 시 를 표시 합 니 다.[start:end]
    배열 세 션, 구간 은 [start, end) 이 고 end (마이너스 가 꼴찌) 는 포함 되 지 않 습 니 다.[?()]
    표현 식 을 걸 러 냅 니 다. 표현 식 결 과 는 불 값 이 어야 합 니 다.
    필터 연산 자 지원
    설명 하 다.==
    left 는 right (주의 1 은 '1' 이 아 닙 니 다)!=
    같 지 않다<
    ... 보다 작다<=
    이하>
    ... 보다 크다>=
    ... 보다 크다=~
    정규 표현 식 일치 [? (@. name = ~ / foo. *? / i)]in
    왼쪽 은 오른쪽 에 존재 합 니 다. [? (@. size in ['S',' M '])]nin
    왼쪽 은 오른쪽 에 존재 하지 않 습 니 다.
    끝 함수 지원
    설명 하 다.min()
    숫자 배열 의 최소 값 을 계산 하 다.max()
    숫자 배열 의 최대 값 을 계산 하 다.avg()
    숫자 배열 의 평균 값 을 계산 하 다.sum()
    숫자 배열 의 총 값 을 계산 합 니 다 (새로 추 가 된)
     2. JSON 데이터 준비
    {
        "store": {
            "book": [{
                "category": "reference",
                "author": "Nigel Rees",
                "title": "Sayings of the Century",
                "price": 8.95
            }, {
                "category": "fiction",
                "author": "Evelyn Waugh",
                "title": "Sword of Honour",
                "price": 12.99
            }, {
                "category": "fiction",
                "author": "Herman Melville",
                "title": "Moby Dick",
                "isbn": "0-553-21311-3",
                "price": 8.99
            }, {
                "category": "fiction",
                "author": "J. R. R. Tolkien",
                "title": "The Lord of the Rings",
                "isbn": "0-395-19395-8",
                "price": 22.99
            }],
            "bicycle": {
                "color": "red",
                "price": 19.95
            }
        },
        "expensive": 10
    }

    데모 코드
    @Test
    public void demo1(){
        final String json = "{\"store\":{\"book\":[{\"category\":\"reference\",\"author\":\"Nigel Rees\",\"title\":\"Sayings of the Century\",\"price\":8.95},{\"category\":\"fiction\",\"author\":\"Evelyn Waugh\",\"title\":\"Sword of Honour\",\"price\":12.99},{\"category\":\"fiction\",\"author\":\"Herman Melville\",\"title\":\"Moby Dick\",\"isbn\":\"0-553-21311-3\",\"price\":8.99},{\"category\":\"fiction\",\"author\":\"J. R. R. Tolkien\",\"title\":\"The Lord of the Rings\",\"isbn\":\"0-395-19395-8\",\"price\":22.99}],\"bicycle\":{\"color\":\"red\",\"price\":19.95}},\"expensive\":10}";
    
        ONode n = ONode.load(json);
    
        ONode t1 = n.select("$.store.book [0].title");
        System.out.println("
    t1:" + t1); ONode t2 = n.select("$['store']['book'][0]['title']"); System.out.println("
    t2:" + t2); ONode t3 = n.select("$.store.book[*].author"); System.out.println("
    t3:" + t3); ONode t4 = n.select("$..author"); System.out.println("
    t4:" + t4); ONode t5 = n.select("$.store.*"); System.out.println("
    t5:" + t5); ONode t6 = n.select("$.store..price"); System.out.println("
    t6:" + t6); ONode t7 = n.select("$..book[2]"); System.out.println("
    t7:" + t7); ONode t8 = n.select("$..book[-2]"); System.out.println("
    t8:" + t8); ONode t9 = n.select("$..book[0,1]"); System.out.println("
    t9:" + t9); ONode ta = n.select("$..book[:2]"); System.out.println("
    ta:" + ta); ONode tb = n.select("$..book[1:2]"); System.out.println("
    tb:" + tb); ONode tc = n.select("$..book[-2:]"); System.out.println("
    tc:" + tc); ONode td = n.select("$..book[2:]"); System.out.println("
    td:" + td); ONode te = n.select("$..book[?(@.isbn)]"); System.out.println("
    te:" + te); ONode tf = n.select("$.store.book[?(@.price < 10)]"); System.out.println("
    tf:" + tf); ONode tg = n.select("$..book[?(@.author =~ /.*REES/i)]"); System.out.println("
    tg:" + tg); ONode th = n.select("$..*"); System.out.println("
    th:" + th); ONode ti = n.select("$..book[?(@.price <= $.expensive)]"); System.out.println("
    ti:" + ti); }

    4. 콘 솔 출력
    t1:"Sayings of the Century"
    
    t2:"Sayings of the Century"
    
    t3:["Nigel Rees","Evelyn Waugh","Herman Melville","J. R. R. Tolkien"]
    
    t4:["Nigel Rees","Evelyn Waugh","Herman Melville","J. R. R. Tolkien"]
    
    t5:[[{"category":"reference","author":"Nigel Rees","title":"Sayings of the Century","price":8.95},{"category":"fiction","author":"Evelyn Waugh","title":"Sword of Honour","price":12.99},{"category":"fiction","author":"Herman Melville","title":"Moby Dick","isbn":"0-553-21311-3","price":8.99},{"category":"fiction","author":"J. R. R. Tolkien","title":"The Lord of the Rings","isbn":"0-395-19395-8","price":22.99}],{"color":"red","price":19.95}]
    
    t6:[8.95,12.99,8.99,22.99,19.95]
    
    t7:[{"category":"fiction","author":"Herman Melville","title":"Moby Dick","isbn":"0-553-21311-3","price":8.99}]
    
    t8:[{"category":"fiction","author":"Herman Melville","title":"Moby Dick","isbn":"0-553-21311-3","price":8.99}]
    
    t9:[{"category":"reference","author":"Nigel Rees","title":"Sayings of the Century","price":8.95},{"category":"fiction","author":"Evelyn Waugh","title":"Sword of Honour","price":12.99}]
    
    ta:[{"category":"reference","author":"Nigel Rees","title":"Sayings of the Century","price":8.95},{"category":"fiction","author":"Evelyn Waugh","title":"Sword of Honour","price":12.99}]
    
    tb:[{"category":"fiction","author":"Evelyn Waugh","title":"Sword of Honour","price":12.99}]
    
    tc:[{"category":"fiction","author":"Herman Melville","title":"Moby Dick","isbn":"0-553-21311-3","price":8.99},{"category":"fiction","author":"J. R. R. Tolkien","title":"The Lord of the Rings","isbn":"0-395-19395-8","price":22.99}]
    
    td:[{"category":"fiction","author":"Herman Melville","title":"Moby Dick","isbn":"0-553-21311-3","price":8.99},{"category":"fiction","author":"J. R. R. Tolkien","title":"The Lord of the Rings","isbn":"0-395-19395-8","price":22.99}]
    
    te:[{"category":"fiction","author":"Herman Melville","title":"Moby Dick","isbn":"0-553-21311-3","price":8.99},{"category":"fiction","author":"J. R. R. Tolkien","title":"The Lord of the Rings","isbn":"0-395-19395-8","price":22.99}]
    
    tf:[{"category":"reference","author":"Nigel Rees","title":"Sayings of the Century","price":8.95},{"category":"fiction","author":"Herman Melville","title":"Moby Dick","isbn":"0-553-21311-3","price":8.99}]
    
    tg:[{"category":"reference","author":"Nigel Rees","title":"Sayings of the Century","price":8.95}]
    
    th:[{"book":[{"category":"reference","author":"Nigel Rees","title":"Sayings of the Century","price":8.95},{"category":"fiction","author":"Evelyn Waugh","title":"Sword of Honour","price":12.99},{"category":"fiction","author":"Herman Melville","title":"Moby Dick","isbn":"0-553-21311-3","price":8.99},{"category":"fiction","author":"J. R. R. Tolkien","title":"The Lord of the Rings","isbn":"0-395-19395-8","price":22.99}],"bicycle":{"color":"red","price":19.95}},[{"category":"reference","author":"Nigel Rees","title":"Sayings of the Century","price":8.95},{"category":"fiction","author":"Evelyn Waugh","title":"Sword of Honour","price":12.99},{"category":"fiction","author":"Herman Melville","title":"Moby Dick","isbn":"0-553-21311-3","price":8.99},{"category":"fiction","author":"J. R. R. Tolkien","title":"The Lord of the Rings","isbn":"0-395-19395-8","price":22.99}],{"category":"reference","author":"Nigel Rees","title":"Sayings of the Century","price":8.95},"reference","Nigel Rees","Sayings of the Century",8.95,{"category":"fiction","author":"Evelyn Waugh","title":"Sword of Honour","price":12.99},"fiction","Evelyn Waugh","Sword of Honour",12.99,{"category":"fiction","author":"Herman Melville","title":"Moby Dick","isbn":"0-553-21311-3","price":8.99},"fiction","Herman Melville","Moby Dick","0-553-21311-3",8.99,{"category":"fiction","author":"J. R. R. Tolkien","title":"The Lord of the Rings","isbn":"0-395-19395-8","price":22.99},"fiction","J. R. R. Tolkien","The Lord of the Rings","0-395-19395-8",22.99,{"color":"red","price":19.95},"red",19.95,10]
    
    ti:[{"category":"reference","author":"Nigel Rees","title":"Sayings of the Century","price":8.95},{"category":"fiction","author":"Herman Melville","title":"Moby Dick","isbn":"0-553-21311-3","price":8.99}]

    좋은 웹페이지 즐겨찾기