新手问题 这个 JSON 怎么按自身格式嵌套转换字段

lyb124553153 · 2017年05月14日 · 最后由 lyb124553153 回复于 2017年05月15日 · 1698 次阅读

怎么把返回的数据按照某个字段

def index
    json_str = Groupall.to_json
    render :json => json_str, status => '200'
  end
[
  {
    "id": 3,
    "group": "分组0",
    "name": "测试2",
    "active": "ceshi",
    "created_at": "2017-05-02T02:02:37.283Z",
    "updated_at": "2017-05-02T02:02:37.283Z"
  },
  {
    "id": 4,
    "group": "分组1",
    "name": "测试3",
    "active": "ceshi",
    "created_at": "2017-05-02T02:02:37.287Z",
    "updated_at": "2017-05-02T02:02:37.287Z"
  },
  {
    "id": 5,
    "group": "分组0",
    "name": "测试4",
    "active": "ceshi2",
    "created_at": "2017-05-02T02:02:37.290Z",
    "updated_at": "2017-05-02T02:02:37.290Z"
  }
]

想要转换成 就是按照 group 字段的值进行分组,然后再 children 里面把 NAME 相同的设为一个对象,把 active ,不同的字段合并到一个数组里

[
  {

    "group": "分组0",
    "children":[
     {name:"测试2"  ,"active": ["ceshi2"]}
     {name:"测试4"} 
    ]
 },
  {   
    "group": "分组1",
   "children":[
   {name:测试3,"active": ["ceshi2"]}
   ]
  },

]

可以用 rails 自带的 jbuilder 啊

kai209209 回复

用 JBUILDER 的话 ,view 该怎么写啊,我这个转换相当于把三条记录按 group ,分组转成了两条记录,在 Jbuilder 官方文档里面 好像是按照@message 来逐条渲染的

瞎写的。 result = [] test_tmp = test.group_by { |h| h[:group] } .each { |k, v| result << {group: k, children: v.map { |value| value[:name] }} }

ruby_xi 回复

group_by 后借大括号 和接小括号有什么不同啊

需要 登陆 后方可回复, 如果你还没有账号请 注册新账号