现在 print 出来的格式是这样的{ :label=> "Chrome", :data=> 2 },能不能按照另外的写法打印出来:{ label: "Chrome", data: 2 },因为前台要解析需要的格式是这样的。
#2 楼 @dandananddada { "label" : "Chrome" , "data" : "2" }
就是标准格式了,javascript 不能处理那就是 js 的问题。默认输出是因为 ruby 的 hash 表示是如此,又不是 json 格式。
传输都是文本,前台也需要 parse 的。
自己到 chrome 的控制台试一下就知道了。
JSON.parse('{ "label" : "Chrome" , "data" : "2" }')
另外,前台一般都不需要碰触这么 low level 的事情。就算是 jquery 都可以完美处理。你如果需要写 JOSN.parse,说明你的代码肯定有问题。
@nightire 就是因为场景多,所以应该有抽象。一般都用库,要么自己写简单抽象。楼主的场景是处理服务端数据这一块的业务代码,在这里如果你需要写这个就说明抽象不够,代码重复的可能性高。这些 low level API 当然必须知道,但知道并不意味着你必须要写进代码中。
#11 楼 @billy OK,如果只谈写应用的话,这么说无妨,不过这个前提很重要。另外我不觉得像这样的 API 有多 low level,否则的话 forEach 这样的方法也不要直接调用了,因为从标准来看它们之间没有什么 level 差,顶多说对于数据的操作应尽可能封装成高阶接口,可有时候用了这些原生 API 也不能就认为“有问题”,因为有时候应用场景就是很简单,我没必要引个库进来,这很常见。
即便是在大型应用中也不见得就不会有直接调用它们的场景,比如说在一个 angular 应用里,多数时候数据操作都是高度抽象的,但难免有时候要写个拦截器之类的东西对特定 http 响应做处理,这时候你要进入到数据处理层的内部,尽管不是和业务逻辑直接关联可也是前置需求的一部分。因此我说这个前提很重要,否则对于不熟悉前端的人来说看到你说的话说不定会吓的不敢写 JSON.parse 了。