1

这是我拥有的 JSONArray:

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

有时,每个对象都有两个以上的属性(属性?)。但我只是在这里展示原理。在 Java 中,我只需要抓取“总数”。我不需要“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”和“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();
4

3 回答 3

0

http://php.net/unset

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

于 2012-07-31T16:12:52.623 回答
0

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

SELECT COUNT(*) FROM ...

于 2012-11-29T15:01:05.227 回答
0

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

jObject = new JSONObject(myString);

在您可以从 JSONObject 中检索所有变量之后。

对于php方面:

使用json_decode end json_encode 在 json 和混合变量之间切换。混合变量后,删除不需要的内容并将其转换回 json。

于 2012-07-31T15:57:42.437 回答