Question

Images Model contain id, file_name and description. Gem: either RABL or GRAPE

The usual output is:

{
    "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"
        }
    ]
}

How do I remove the attributes/keys and convert the values to an array as follows?

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

Solution

You can convert it into a hash by using

JSON.parse(json)

and reconstruct the json without the keys

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
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top