从PHP传递JSON的有效方法

时间:2012-07-31 15:52:58

标签: php sql json

这是我的JSONArray:

 [{"items_id":"13","total":"1"}, {"items_id":"216","total":"0"},{"items_id":"16","total":"1"}]

有时,每个对象都有两个以上的属性(属性?)。但我只是在这里展示原则。在Java中,我只需要抓住" total"。我不需要" items_id"。

我认为它出现了,因为这是我在PHP中的MySQL查询:

$count_query_result=mysql_query("
SELECT items.items_id, 
COUNT(ratings.item_id) AS total
FROM `items`
LEFT JOIN ratings ON (ratings.item_id = items.items_id)
WHERE items.cat_id = '{$cat_id}'  AND items.spam < 5
GROUP BY items_id ORDER BY TRIM(LEADING 'The ' FROM items.item) ASC;");

这是我的JSON输出(我只显示了上面三个查询中的一个):

print(json_encode(array($output,$output2,$output3)));

我只想要用JSON编码的三个属性(三个输出变量各有一个)。我想要属性&#34;总计&#34;,&#34;率&#34;和&#34; item&#34;。

所以我的问题是,我可以摆脱不必要的items_id属性吗?或者我甚至需要? (我知道我需要在SQL中使查询工作 - 但是如何在JSONArray中删除它?)

我在想如果我有一个包含数百或数千个项目的列表,我可以通过仅输出我需要的JSON属性来节省一半的空间(和时间?) - 这个想法是否正确?

修改:根据要求提供更多代码:

while($row=mysql_fetch_assoc($count_query_result))
    $output[]=$row;
while($row=mysql_fetch_assoc($average_query_result))
    $output2[]=$row;
while($row=mysql_fetch_assoc($items_query_result))
    $output3[]=$row;

print(json_encode(array($output,$output2,$output3)));
mysql_close();

3 个答案:

答案 0 :(得分:0)

使用JSONObject解析String。只需将字符串作为参数放在JSONObject的构造函数中。

jObject = new JSONObject(myString);

从JSONObject中检索所有变量之后。

对于php方面:

使用json_decode结束json_encode在json和混合变量之间切换。 一旦你有混合变量,删除你不需要的东西并将其转换回json。

答案 1 :(得分:0)

http://php.net/unset

取消设置不需要的值,然后输出json

答案 2 :(得分:0)

我认为你的SQL查询中不需要它。如果您只需要在查询的上下文中来自数据库的数据,则不需要SELECT它。尝试做:

  

SELECT COUNT(*) FROM ...