1

次の Postgres クエリがあります。

"SELECT \"responses\".\"index\", \"responses\".\"created_at\",
ROUND(AVG(\"responses\".\"numeric\")) AS numeric
FROM \"responses\"
WHERE \"responses\".\"time\" = '#{time}'
GROUP BY \"responses\".\"index\", \"responses\".\"created_at\""

を使用してレスポンスをjsonとして出力しようとしていますrow_to_json。使うことができます:

"select row_to_json(row)
from (
  SELECT \"responses\".\"index\", \"responses\".\"created_at\",
  ROUND(AVG(\"responses\".\"numeric\")) AS numeric
  FROM \"responses\"
  WHERE \"responses\".\"time\" = '#{time}'
  GROUP BY \"responses\".\"index\", \"responses\".\"created_at\"
) row"

これは私に与えるでしょう:

{"row_to_json"=>"{\"index\":1,\"created_at\":\"2014-07-12 03:51:00\",\"numeric\":3}"}

row_to_jsonただし、ハッシュにネストされた応答は本当に必要ありません。それを削除する簡単な方法はありますか?

"{\"index\":1,\"created_at\":\"2014-07-12 03:51:00\",\"numeric\":3}"
4

1 に答える 1

1

array_to_json関数と関数を使用する必要がありarray_aggます。

例えば:

SELECT array_to_json(array_agg(row_to_json(row))) FROM ...

正しいJSON配列を返します

参考文献:

于 2014-10-16T20:45:19.547 に答える