2009-09-30 89 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