JSON的操作
今天遇到了一个要解析JSON的需求。在http://stackoverflow.com/questions/1826727/how-do-i-parse-json-with-ruby-on-rails找到了答案。
irb(main):021:0> arr=JSON.parse str_vps
=> [{"id"=>"260e053b-d728-4785-888d-eb4f1ca0a194", "name"=>"全局管综视点"}, {"id"=>"7a1baa69-baab-434f-bcf0-aa885ab07ed4", "name"=>"管综细部"}, {"id"=>"441d05a2-bcc6-4e19-8eb7-f239934f395c", "name"=>"空调机组"}, {"id"=>"1b35039c-906d-409f-98c7-5affd2fd2ef3", "name"=>"水泵"}, {"id"=>"c4f99f19-dc28-4b52-b00c-007e59ea35b7", "name"=>"透视1"}, {"id"=>"ed04969b-dabb-4575-bc10-f09104ab8f67", "name"=>" 透视2"}]
irb(main):022:0> arr.length
=> 6
irb(main):023:0> arr[0].name
NoMethodError: undefined method `name' for #<Hash:0x00000003c58db8>
from (irb):23
from /usr/lib/ruby/vendor_ruby/rails/commands/console.rb:47:in `start'
from /usr/lib/ruby/vendor_ruby/rails/commands/console.rb:8:in `start'
from /usr/lib/ruby/vendor_ruby/rails/commands.rb:41:in `<top (required)>'
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from script/rails:6:in `<main>'
irb(main):024:0> arr[0][name]
NameError: undefined local variable or method `name' for main:Object
from (irb):24
from /usr/lib/ruby/vendor_ruby/rails/commands/console.rb:47:in `start'
from /usr/lib/ruby/vendor_ruby/rails/commands/console.rb:8:in `start'
from /usr/lib/ruby/vendor_ruby/rails/commands.rb:41:in `<top (required)>'
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from script/rails:6:in `<main>'
irb(main):025:0> arr[0]
=> {"id"=>"260e053b-d728-4785-888d-eb4f1ca0a194", "name"=>"全局管综视点"}
irb(main):026:0> vp1=arr[0]
=> {"id"=>"260e053b-d728-4785-888d-eb4f1ca0a194", "name"=>"全局管综视点"}
irb(main):027:0> vp1.id
NoMethodError: undefined method `id' for #<Hash:0x00000003c58db8>
from (irb):27
from /usr/lib/ruby/vendor_ruby/rails/commands/console.rb:47:in `start'
from /usr/lib/ruby/vendor_ruby/rails/commands/console.rb:8:in `start'
from /usr/lib/ruby/vendor_ruby/rails/commands.rb:41:in `<top (required)>'
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from script/rails:6:in `<main>'
irb(main):028:0> vp1["id"]
=> "260e053b-d728-4785-888d-eb4f1ca0a194"
irb(main):029:0> vp1[:id]
=> nil
只要一句命令就可以将JSON解析为ruby对象(array、hash)。
把博客用起来,记录一下自己填过的坑。
JSON的操作的更多相关文章
- Json——js和C#对Json的操作
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式.博主记得几年前在华为外包项目中有一个和Android应用交互的需求,Andr ...
- 支持Json进行操作的Javascript类库TAFFY DB
前段时间工作中用到Json数据,希望将一些简单的增删改查放到客户端来做,这样也能减少服务器端的压力.分别查找了几个可以对Json进行操作的javascript 类库,最终选定了TAFFY DB.原因如 ...
- C#中用JavaScriptSerializer和Json.Net操作json格式的文件
1.json文件 2.写出对应的类 //折扣 public class Discount { public string Qty { get; set; } public string percent ...
- javascript json对象操作(基本增删改查)
/** * Json对象操作,增删改查 * * @author lellansin * @blog www.lellansin.com * @version 0.1 * * 解决一些常见的问题 * g ...
- JS和C#对Json的操作
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式.博主记得几年前在华为外包项目中有一个和Android应用交互的需求,Andr ...
- C# Newtonsoft.Json JObject 操作
C# Newtonsoft.Json JObject 操作举例 JArray j = new JArray(); JObject obj = new JObject( ") ); JObje ...
- python 发送json数据操作实例分析 - python
文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 本文实例讲述了python 发送json数据操作.分享给大家供大家参考,具体如下: # !/usr/bin/env py ...
- npm、cnpm与package-lock.json的操作
来源:npm.cnpm与package-lock.json的操作_IT码农-爱吃辣条的博客-CSDN博客_cnpm lock package.json文件只能锁定大版本,也就是版本号的第一位,并不能锁 ...
- JSON数组操作
在jquery中处理JSON数组的情况中遍历用到的比较多,但是用添加移除这些好像不是太多. 今天试过json[i].remove(),json.remove(i)之后都不行,看网页的DOM对象中好像J ...
- 开发日志系列:一个表单页面的呈现与提交(一)——JSON的操作
JSON操作 引子 最近在做一个表单页面,大概是这个样子的 这里打算用一个JSON存储所有的信息,我们可以理解为,所有东西都存在一个字符串里面.方便,快捷,易读,数据库操作也方便了.甚至,可以将很多不 ...
随机推荐
- jQuery 遍历函数(w3school)
jQuery 遍历函数包括了用于筛选.查找和串联元素的方法. 函数 描述 .add() 将元素添加到匹配元素的集合中. .andSelf() 把堆栈中之前的元素集添加到当前集合中. .childr ...
- Wall Street English
1月23号,报名Wall Street English!
- Oracle将表keep到内存
一.引言: 有时候一些基础表需要非常的频繁访问,尤其是在一些循环中,对该表中的访问速度将变的非常重要.为了提高系统的处理性能,可以考虑将一些表及索引读取并保存到内存中. 二.关于keep内存的几个参数 ...
- Volley的基本用法
1. Volley简介 我们平时在开发Android应用的时候不可避免地都需要用到网络技术,而多数情况下应用程序都会使用HTTP协议来发送和接收网络数据.Android系统中主要提供了两种方式来进行H ...
- JAVA中int、String的类型相互转换
int -> String int i=12345;String s="";第一种方法:s=i+"";第二种方法:s=String.valueOf(i); ...
- 杭电1009-FatMouse' Trade
FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- C类地址
C类地址第1字节.第2字节和第3个字节为网络地址,第4个字节为主机地址.另外第1个字节的前三位固定为110. C类地址范围:192.0.0.1到223.255.255.255.(第1个字节的二进制值前 ...
- EF 用CallContext上下文管理
public class ObjectContextFactory { private static CIK_NewsEntities context; public static DbContext ...
- Cimg代码初探
Cimg代码初探 程序设计最为激动人心的地方,在于丰富的并且容易被查阅到资料.比如对于图像处理,固然有Opencv等较为丰富.被广泛知晓的类库:也有其他很多具有一定特色的类库.在这段时间里面, ...
- log4j.properties详解与例子
在项目中的classes 中新建立一个log4j.properties文件即可: 在实际编程时,要使Log4j真正在系统中运行事先还要对配置文件进行定义.定义步骤就是对Logger.Appender及 ...