2016-11-05 31 views
1

使用JsonPath當你不知道,如果你正在處理給出下面的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 
} 

我們可以像使用$.store.book[*].author路徑表達式得到所有的作者。但是如果我們事先不知道book是一個數組還是一個對象,例如如果我們能有什麼上述JSON而且這樣的事情:

{ 
    "store": { 
     "book": { 
       "category": "reference", 
       "author": "Nigel Rees", 
       "title": "Sayings of the Century", 
       "price": 8.95 
     }, 
     "bicycle": { 
      "color": "red", 
      "price": 19.95 
     } 
    }, 
    "expensive": 10 
} 

是否有可能被用於獲取在任何情況下所有的作者是「通用路徑」?

回答

1

是的,你可以使用:

$.store..author 

可測這裏:

https://jsonpath.curiousconcept.com/

「希望這有助於。

+0

有什麼辦法可以在路徑中包含'book'?如果有書 - >作者和期刊 - >作者,我會從這條道路上得到兩組作者,對吧?如果我只想取回書籍作者,該怎麼辦? – Adam

+0

當然。然後你可以編寫:$ .store.book..author,它也可以用於兩種JSON形狀,僅當「書」(s)中的後代捕獲「作者」時, – YSharp

相關問題