这是我拥有的一个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编码的三个属性(三个输出变量中的每一个都有一个)。我想要属性"total"、"rate"answers"item"。
所以我的问题是,我可以去掉不需要的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();
使用JSONObject解析字符串。只需将字符串作为参数放入JSONObject的构造函数中即可。
jObject = new JSONObject(myString);
之后,您可以从JSONObject中检索所有变量。
对于php端:
使用json_decode和json_encode在json和混合变量之间切换。混合变量后,删除不需要的内容并将其转换回json。
http://php.net/unset
取消设置不需要的值,然后输出json
我认为您的SQL查询中不需要它。如果只在查询上下文中需要数据库中的数据,则不需要SELECT
SELECT COUNT(*) FROM ...