首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jbuilder - Array到JSON

Jbuilder - Array到JSON
EN

Stack Overflow用户
提问于 2016-02-08 15:19:17
回答 3查看 193关注 0票数 0

我有一个名为sales的数组,其格式如下--

代码语言:javascript
复制
2015  January   2403
2015  February  2420
2015  March     2320
2015  April     2230

阵列结构- [[2015, "January", 2403], [2015, "February", 2420]]

我希望用jbuilder构造以下json响应

代码语言:javascript
复制
{
 months : ['January', 'February', 'March', 'April']
 sales :  [2403, 2420, 2320, 2230]
}

我试过的东西--

我将所有月份(以及类似的销售)映射到另一个数组中--

代码语言:javascript
复制
@months = @sales.map {|year, month, sales| [month]}

然后在jbuilder .

代码语言:javascript
复制
{"months":[["February"],["January"],["December"],["November"]]}

这不是我真正想要的,也不是很有效率

帮个忙就好了。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-08 15:51:16

在行动中:

代码语言:javascript
复制
array = [[2015, "January", 2403], [2015, "February", 2420]]
@data = array.transpose

在.json.jbuilder模板中:

代码语言:javascript
复制
json.months @data[1]
json.sales  @data[2]
票数 1
EN

Stack Overflow用户

发布于 2016-02-08 15:45:43

这是Array#transpose的一个可爱的用例。

代码语言:javascript
复制
years, months, sales = data.transpose
代码语言:javascript
复制
{
  "months": months,
  "sales": sales
}
票数 1
EN

Stack Overflow用户

发布于 2016-02-08 15:44:04

代码语言:javascript
复制
require 'json'

datas = [[2015, "January", 2403], [2015, "February", 2420]]

memo = {months: [], sales: []}

datas.reduce(memo) do |memo, data|
  memo[:months] << data[1]
  memo[:sales] << data[2]
  memo
end

puts JSON.generate(memo)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35273056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档