2009-09-30 67 views
1

我有一個JSON文件/流,我希望能夠做出選擇SQL風格JSON過濾器(如SQL SELECT)

所以這裏是file

文件包含所有我擁有的數據,我希望能夠展示,讓說:

一切:odeu_nom和odeu_desc那就是:categorie =弗耶

,如果你能做到這一點用PHP和JSON(EVAL)的罰款...告訴我怎麼...

另一方面在SQL我會做:SELECT * from $json where categorie=Feuilles

p.s.我發現:jsonpath這是json的xpath ...也許另一種選擇?

p.s. #2 ...有一些研究,我已經找到了anoter選項,json與數組相同,也許我可以過濾數組,然後只返回一個我需要的數據?...我該怎麼做?

回答

1

即使您更熟悉SQL,嘗試使用XPath樣式的選擇器(如jsonpath),而不是使用SQL也更有意義。

「路徑」的優勢在於它更容易表達XML/JSON隱含的層次結構,與SQL需要使用各種連接來幫助其「擺脫矩形/表格式監獄」 。

雖然我從來沒有使用jsonpath,但通過閱讀它的摘要頁面,我認爲下面應該產生catagorie是'Feuilles'的所有odeu_nom(給出json輸入在問題中提到)。

$.Liste_des_odeurs[?(@.categorie = 'Feuilles'].odeu_nom 

對應於以下XPath

/Liste_des_odeurs[categorie='Feuilles']/odeu_nom 

的Et瞧... 順便說一句, '爵士是沒有死,它只是聞起來好笑'(F扎帕)

+0

雅,但它難以子集(只有xx = 2) – menardmam 2009-09-30 21:44:43

+0

如何做,用xpath select * from aaa where bb =「xyz」...不知道! :-( – menardmam 2009-09-30 21:45:47

+0

@ marc-andre這一切都取決於如何理解aaa和bb,但假設映射相對簡單,「// aaa [bb ='xyz']/parent :: *」可以做。 Obj-Rel映射,例如我使用了// aaa,假設可能有'aaa節點'在任何地方',但是單個/會在其他情況下執行等。 – mjv 2009-09-30 22:07:09