以 json 格式创建列表

Creating a list in json format

我想显示 JSON api 的 "pretty" 格式。我大部分时间都在使用 Active Model Serializers。我了解到我可以使用 JSON.pretty_generate() 方法 "prettify" 我的 JSON 显示。

我已经使用虚拟数据对其进行了测试,并且它在浏览器上运行:

def index
 #@users = User.all
 my_object = { :array => [1, 2, 3, { :sample => "hash"} ], :foo => "bar" }
 render json: JSON.pretty_generate(my_object)
end

本地主机:

#=> {
  "array": [
    1,
    2,
    3,
    {
      "sample": "hash"
    }
  ],
  "foo": "bar"
}

我的目标是在索引上显示用户信息列表。现在它没有缩进和换行符......好吧,它看起来不漂亮:

用户控制器:

def index
     @users = User.all     
     render json: @users, each_serializer: UserSerializer, adapter: :json
UserSerializer)
   end

本地主机:

{"users":[{"id":1,"username":"Iggy1","items":[{"id":1,"list_id":1,"name":"Wash dishes","completed":true},{"id":7,"list_id":1,"name":"Finish this assignment","completed":false}],"lists":[{"id":1,"name":"Important!","user_id":1,"permission":"private"},{"id":8,"name":"Bloc's obligatory list number two","user_id":1,"permission":"private"},{"id":14,"name":"Mandatory list one","user_id":1,"permission":"private"},{"id":15,"name":null,"use...

经过反复试验,我发现我需要让@users 成为json 的列表。证明 - 当我 运行 这个:

用户控制器:

def index
  @users = User.all
  render json: JSON.pretty_generate(@users), each_serializer: UserSerializer
end

localhost (显示错误消息)

#=> only generation of JSON objects or arrays allowed

如何在用户控制器索引的 User.all 上应用 JSON.pretty_generate()

您可以在 json 中转换您的对象,例如:

   render json: JSON.pretty_generate(@users.as_json), each_serializer: UserSerializer

希望对你有所帮助

将散列转换为 json:

JSON.pretty_generate(@users.to_json)

首先将 @users 转换为 to_json:

def index
  @users = User.all
  render json: JSON.pretty_generate(@users.to_json), each_serializer: UserSerializer
end