I have a model for languages and i want to get all the languages as json but the json output looks as follows
[{“language”:{“created_at”:null,”id”:1,”language”:”English”,”updated_at”:null}},{“language”:{“created_at”:null,”id”:2,”language”:”Swedish”,”updated_at”:null}},{“language”:{“created_at”:null,”id”:3,”language”:”German”,”updated_at”:null}},{“language”:{“created_at”:null,”id”:4,”language”:”French”,”updated_at”:null}},{“language”:{“created_at”:null,”id”:5,”language”:”spanish”,”updated_at”:null}},{“language”:{“created_at”:null,”id”:6,”language”:”dutch”,”updated_at”:null}},{“language”:{“created_at”:”2012-12-03T05:01:18Z”,”id”:7,”language”:”Tamil”,”updated_at”:”2012-12-03T05:01:18Z”}}]
but i want to make this as
{“language”:[{“created_at”:null,”id”:1,”language”:”English”,”updated_at”:null},{“created_at”:null,”id”:2,”language”:”Swedish”,”updated_at”:null},{“created_at”:null,”id”:3,”language”:”German”,”updated_at”:null},{“created_at”:null,”id”:4,”language”:”French”,”updated_at”:null},{“created_at”:null,”id”:5,”language”:”spanish”,”updated_at”:null},{“created_at”:null,”id”:6,”language”:”dutch”,”updated_at”:null},{“created_at”:null,”id”:7,”language”:”Tamil”,”updated_at”:null} ] }
Update
def index
@languages = Language.all
respond_to do |format|
format.json { render json: @languages}
end
end
update 2
class Language < ActiveRecord::Base
ActiveRecord::Base.include_root_in_json = false
has_and_belongs_to_many :users
end
I believe this should work:
What this does it to convert the
@languagesarray into an array of JSON-formatted hash models with no root keys (usingas_json), then wraps the result in a hash with a root key “language”, and convert that hash into a JSON-formatted string withto_json. (See the docs for details on including or not including a root node usingas_json.)For example, with a model
Post: