JSON文字列があり、次を使用します。
objJson = JSON.parse(jsonString)
respond_to do |format|
format.html { render :json => objJson.to_json(:include => [:ID, :Name]) }
end
問題は、to_json
モデルでのみ機能するため、フィルターが無視されることです。
これが私のJSONです:
{
"count":29,
"results":
[
{"ID":556036109,"Name":"Mojos", "Url":"https://mojos/id300751949","currency":"USD"},
{"ID":556036110,"Name":"Asav", "Url":"https://asav/id300751949","currency":"USD"}
]
}
レンダリング時にJSONオブジェクトをフィルタリングする方法はありますか?
アップデート:
私はssorallenコードを使用しました:
KEYS_TO_KEEP = ['ID', 'Name']
objJson = JSON.parse(jsonString)
respond_to do |format|
format.html {render :json => objJson['results'].keep_if {|k, v| KEYS_TO_KEEP.include?(k)}}
end
問題は、objJson['results']が単一のハッシュではなく配列をハッシュに返したことです。
したがって、それを行う正しい方法は次のとおりです。
objJson = objJson['results'].each { |x| x.keep_if {|k, v| KEYS_TO_KEEP.include?(k)} }