2012-09-29 4 views
2

jsonPath에서 여러 값으로 개체를 필터링하려고합니다. 하나의 가능한 값은 전자 메일 주소입니다. @는 현재 객체에 대한 포인터로 사용되므로 실패합니다. 이메일 주소가있는 jsonPath 필터 표현

예 JSON 문자열이

$.report.Author[?(@.value==='John')] 

결과가

"[{"value":"John","count":"58","fields":[{"key":"FileSize","value":"12314"},{"key":"Date","value":"2000-01-01"}]}]" 

하지만 이메일 주소가 년부터이 @ jsonPath이

에 false를 돌려 서명을 사용하는 경우

{ 
"report": { 
    "Author": [ 
     { 
      "value": "John", 
      "count": "58", 
      "fields": [ 
       { 
        "key": "FileSize", 
        "value": "12314" 

       }, 
       { 
        "key": "Date", 
        "value": "2000-01-01" 
       } 
      ] 
     }, 
     { 
      "value": "Jane", 
      "count": "1", 
      "fields": [ 
      ] 
     }, 
     { 
      "value": "[email protected]", 
      "count": "58", 
      "fields": [ 
       { 
        "key": "FileSize", 
        "value": "12314" 

       }, 
       { 
        "key": "Date", 
        "value": "2000-01-01" 
       }, 
       { 
        "key": "tags", 
        "value": "a,b,c,d" 
       }   
      ] 
     }, 
     { 
      "value": "Bill", 
      "count": "2", 
      "fields": [ 
       { 
        "key": "FileSize", 
        "value": "14" 

       } 
      ] 
     } 
    ] 
} 
} 

$.report.Author[?(@.value==='[email protected]')] 

@ 기호 나 다른 방법으로 개체를 빠져 나갈 수있는 방법을 아는 사람이 있습니까?

답변

1

이 나를 위해 작동합니다

$.report.Author[?(@.value==='Foo\\u0040bar.com')] 

내가 그것을이 jsonpath librarynodejs를 사용하여 테스트.

0

DefiantJS를 사용하고 JSON 구조에 XPath를 쓸 수 있습니다. 나는 당신의 JSON 데이터에 붙여 넣은이 XPath를 테스트 한
http://defiantjs.com/#xpath-evaluator

와 그것을 작동 : 여기 JSON에 lib 디렉토리 및 테스트 XPath를 사용해보십시오

//Author[value="[email protected]"] 

DefiantJS가 함께 전역 객체 JSON을 확장 새로운 방법; "검색"- 배열을 반환하고 자바 스크립트에서는 다음과 같이 보입니다.

var author = JSON.search(json_data, "//Author[value="[email protected]"]"); 

console.log(author[0].value); 
// [email protected] 

console.log(author[0].count); 
// 58 
관련 문제