2013-06-11 4 views
0

Модель изображений содержит идентификатор, имя_файла и описание. Gem: либо RABL или GRAPEКак пропустить атрибуты/ключ в выводе JSON?

Обычный выход:

{ 
    "images": [ 
     { 
      "id": 48660, 
      "file_name": "9e0f6.jpg", 
      "description": "View 1" 
     }, 
     { 
      "id": 48665, 
      "file_name": "fd42f.jpg", 
      "description": "View 2" 
     }, 
     { 
      "id": 48662, 
      "file_name": "477e8.jpg", 
      "description": "View 3" 
     } 
    ] 
} 

Как удалить атрибуты/ключи и преобразовать значения в массив следующим образом?

{ 
    "images":[ 
     [ 
      48660, 
      "9e0f6.jpg", 
      "View 1" 
     ], 
     [ 
      48665, 
      "fd42f.jpg", 
      "View 2" 
     ], 
     [ 
      48662, 
      "477e8.jpg", 
      "View 3" 
     ] 
    ] 
} 

ответ

0

Вы можете преобразовать его в хэш с помощью

JSON.parse(json) 

и реконструировать без JSON ключей

json_hash = JSON.parse(json) 

inner_array = [] 
json_hash["images"].each do |elem| 
    inner_array << elem.collect{|key, value| value unless ["file_name"].include?(key)} 
end 

json_hash["images"] = inner_array 
json_hash.to_json 
+0

Спасибо большое это работает. Я проигнорировал некоторые атрибуты в JSON. Как выборочно отображать атрибуты? Как и в настоящее время отображаются атрибуты created_at и updated_at. –

+0

Эй вы могли бы рассказать мне, как игнорировать атрибут/ключ, скажем, предположим из приведенного выше примера: file_name. Таким образом, будут отображаться только два из трех полей. –

+0

Обновлен ответ. Вы можете добавить больше атрибутов в массив, если хотите игнорировать эти – usha