json格式在ruby和rails中的注意事项
- #虚拟网络拓扑的json数据
- def topodata
- #@vnic = Vnic.all
- #flash.now[:notice] = 'Message sent!'
- #flash.now[:alert] = 'Message sent!'
- simple_json = {
- nodes: [{ name: 'bob', age: "22", awesome: "true" }, { name: 'bob', age: 22, awesome:true }],
- links: [{ name: 'bob', age: "22", awesome: "true" }, { name: 'bob', age: 22, awesome:true }]
- }
- vnet = Vnet.find(:all, :select => 'id,name,vswitch_id')
- vm = VirtualMachine.find(:all, :select => 'id,hostname,virtual_machine_container_id')
- vmc = VirtualMachineContainer.find(:all, :select => 'id,hostname')
- vswitch = Vswitch.find(:all, :select => 'id,uuid,virtual_machine_container_id,vnet_id,name') #vswitch 和 vmc有什么关系?
- vnic = Vnic.find(:all, :select => 'id,virtual_machine_id,vnet_id')
- #把所有的name放入nodes数组中 如:{"name":"vswitch1","type":"vswitch"}
- nodes = Array.new
- for i in 0..vswitch.size-1 do
- nodes.push({
- name: vswitch[i].name.to_s,
- group: 1 #"vswitch"
- })
- end
- for i in 0..vm.size-1 do
- nodes.push({
- name: vm[i].hostname.to_s,
- group: 2 #"vm"
- })
- end
- for i in 0..vmc.size-1 do
- nodes.push({
- name: vmc[i].hostname.to_s,
- group: 3 #"vmc"
- })
- end
- #储存名字和其在nodes中的位置,为了方便edges找到其位置 如:id_hash["vm2"] = 4
- id_hash = Hash.new
- for i in 0..nodes.size-1 do
- id_hash[nodes[i][:name]] = i
- end
- #edges储存边之间的关系
- #先储存vswitch和vm的关系 => vnic
- links = Array.new
- for i in 0..vnic.size-1 do
- links.push({
- source: id_hash[vm[vnic[i].virtual_machine_id-1].hostname],
- target: id_hash[vswitch[vnet[vnic[i].vnet_id-1].vswitch_id-1].name],
- value: 10,
- des: "vswitch_to_vm"
- })
- end
- #再储存vm和vmc的关系 => vm
- for i in 0..vm.size-1 do
- links.push({
- source: id_hash[vm[i].hostname],
- target: id_hash[vmc[vm[i].virtual_machine_container_id-1].hostname],
- value: 5,
- des: "vm_to_vmc"
- })
- end
- @alljson = {}
- @alljson["nodes"] = nodes
- @alljson["links"] = links
- #flash.now[:alert] = id_hash[vm[2].hostname]
- lsjson = {
- nodes: [
- {name:"Myriel",group:1},
- {name:"Napoleon",group:1},
- {name:"Mlle.Baptistine",group:2},
- ],
- links: [
- {source:0,target:1,value:1},
- {source:1,target:2,value:8},
- {source:2,target:1,value:10},
- ]
- }
- respond_to do |format|
- format.html
- format.json { render json: @alljson } #这里会自动调用to_json
- end
- #render json: lsjson
- #render json: {test: 1}
- end
ruby关于json格式的调用
首先json格式注意:
1、在nodes后面要紧跟:,不能有空格
2、nodes、name这些地方不能用引号括起来,不然不能用ruby转换为json格式
- simple_json = {
- nodes: [{ name: 'bob', age: "22", awesome: "true" }, { name: 'bob', age: 22, awesome:true }],
- links: [{ name: 'bob', age: "22", awesome: "true" }, { name: 'bob', age: 22, awesome:true }]
- }
- 3、(1)可以直接在controller的方法中直接render,就可以得到json格式的数据,比如
- render json: simple_json
- (2)或者另一种方法也可以,这里的@alljson就是类似上面simple_json格式的数据,当然,如果直接是model里导出来的数据也可以直接用,比如@vnic = Vnic.all
- respond_to do |format|
- format.html
- format.json { render json: @alljson } #这里会自动调用to_json
- end
- 4、直接访问url http://localhost:3000/vnet/topodata.json就可以直接得到json数据了
- 在rubychina上看到如果在url上想不要后面.json就可以看到json数据的话,就要到route里改resource直接为json数据了, routes里面对特定的resource加上
format: :json
好像是这样。
json格式在ruby和rails中的注意事项的更多相关文章
- 【转】Ruby on Rails中select使用方法
在Ruby on Rails中真的有一堆Select helper可以用,我们经常容易混淆.常见的有三个..select, select_tag, collection_select(其余的什么sel ...
- ruby on rails 中render的
Ruby rails页面跳转代码如下: 1.render(:text => string) 2.render(:inline => string, [:type => "r ...
- json格式数据 ,将数据库中查询的结果转换为json(方式2)
controller: /*** * 返回所有版本的信息,json的形式返回到前台 * @return */ @RequestMapping(value="/getAllVersion&qu ...
- ruby on rails 中render的使用
最近写ror,因为比较菜,很多东西不知道,只能看一点查一点了 render 先上点搜集的常用方式 render :action => "long_goal", :layout ...
- Ruby on Rails中的Rake教程(Rake如何把我灌醉!)
下面是我们使用Rake任务的例子: 1.给列表中的用户发送邮件 2.每晚数据的计算和报告 3.过期或重新生成缓存 4.备份数据和svn版本(how's this : subversion reposi ...
- 理解ruby on rails中的ActiveRecord::Relation
ActiveRecord::Relation是rails3中添加的.rails2中的finders, named_scope, with_scope 等用法,在rails3统一为一种Relation用 ...
- asp.net后台cs中的JSON格式变量在前台Js中调用方法(前后台示例代码)
//后台cs代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using ...
- asp.net后台cs中的JSON格式变量在前台Js中调用方法
//后台cs代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using ...
- @ResponseBody//该注解会将返回值转为json格式并放到响应体中返回到前台
随机推荐
- Unityclient框架笔记二(组件实体开发模式的思考)
Unity的Entity-Component-System实现的很美丽,很灵活.许多文章也对这样的组件实体的开发模式倍加推崇.由于它契合这么一条规则:优先使用组合而不是继承. 可是实际开发过程中,限制 ...
- hdu 4961 Boring Sum(高效)
pid=4961" target="_blank" style="">题目链接:hdu 4961 Boring Sum 题目大意:给定ai数组; ...
- echarts geo地图坐标转换为页面Offset坐标
https://github.com/apache/incubator-echarts/issues/2540 代码示例: // 获取系列 ) // 获取地理坐标系实例 var coordSys = ...
- 在centos7中用mariadb代替了mysql数据库吗
从最新版本的linux系统开始(如 Centos7),默认的是 Mariadb而不是mysql!(mysql被闭源厂家收购,有闭源风险) 使用系统自带的repos安装很简单: yum install ...
- OpenVpn的ipp.txt文件
ipp=ip pool我猜得,呵呵 ipp.txt文件中存放上一次连接时,客户端分配的ip地址. ipp.txt用来保存上次的连接状态的,并不能为客户端设置固定ip地址. 该文件的格式为:用户名,ip ...
- paip.分布式应用系统java c#.net php的建设方案
paip.分布式应用系统java c#.net php的建设方案 1. 基础设施的建立 1 2. 本地的的调用API 1 3. 数据的传输 1 4. 代码的传输 1 5. 代码的自动热编译 2 6. ...
- 【Android】21.4 图片动画缩放示例
分类:C#.Android.VS2015: 创建日期:2016-03-21 一.简介 该例子演示如何动画缩放图片,实现类似"点击看大图"的效果. 二.示例 1.运行截图 2. ...
- linux 调试利器gdb, strace, pstack, pstree, lsof
1) 如何使用strace+pstack利器分析程序性能? http://www.cnblogs.com/bangerlee/archive/2012/04/30/2476190.html 此文有详细 ...
- angular学习笔记(四)- input元素的ng-model属性
input元素的ng-model属性: 用于将input的值和变量的值进行双向绑定 <!DOCTYPE html> <html ng-app> <head> < ...
- C++ 11 nullptr关键字
熟悉C++的童鞋都知道,为了避免“野指针”(即指针在首次使用之前没有进行初始化)的出现,我们声明一个指针后最好马上对其进行初始化操作.如果暂时不明确该指针指向哪个变量,则需要赋予NULL值.除了NUL ...