0

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)} }
4

1 に答える 1

0

次のようなRubyハッシュのメソッドの1つを使用できますkeep_if

KEYS_TO_KEEP = ['ID', 'Name']
objJson['results'] =
  objJson['results'].keep_if {|k, v| KEYS_TO_KEEP.include?(k)}

format.html {render :json => objJson}
于 2012-12-26T18:25:28.017 に答える