1

これが私が持っているJSONArrayです:

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

各オブジェクトに 3 つ以上のプロパティ (属性?) がある場合があります。しかし、ここでは原則を示しているだけです。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 出力です (上記の 3 つのクエリのうちの 1 つだけを表示しています)。

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

JSON でエンコードされた 3 つのプロパティのみが必要です (3 つの出力変数のそれぞれに 1 つ)。プロパティ「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

JSONObjectを使用して文字列を解析します。JSONObjectのコンストラクターにパラメーターとして文字列を入れるだけです。

jObject = new JSONObject(myString);

JSONObjectからすべての変数を取得できるようになったら。

PHP側の場合:

json_decode end json_encodeを使用して、jsonと混合変数を切り替えます。変数を混合したら、不要なものを削除して、jsonに変換し直します。

于 2012-07-31T15:57:42.437 に答える
0

http://php.net/unset

不要な値の設定を解除してから、jsonを出力します

于 2012-07-31T16:12:52.623 に答える
0

SQLクエリでは必要ないと思います。クエリのコンテキストでのみデータベースからのデータが必要な場合は、その必要はありませんSELECT。次のことだけを試してください。

SELECT COUNT(*) FROM ...

于 2012-11-29T15:01:05.227 に答える