rails1.1已经加入对json的全面支持,现在的Array,Hash,String,Object...等等都有一个to_json方法,生成 json字符串。反过来,我们该如何解析json呢?查了下http://www.json.org/上面ruby语言的链接,在rubyforge上找到了一个项目。解析json对ruby来说非常简单,只要一行代码:
例子:
json = '["a", "B", "C"]'
puts "Unsafe #{unsafe_json(json).inspect}" #输出Unsafe ["a", "B", "C"]
把上面的json字符串解析成Array。这样的方法并不安全,比如:json = 'puts "Danger Will Robinson"'
puts "Unsafe #{unsafe_json(json).inspect}"
又该输出什么呢?很遗憾,解析不出什么东西,跳出一个警告:
warning: character class has `[' without escape
安全的方法如下:module SafeJSON
require 'monitor'
def SafeJSON.build_safe_json
ret = nil
waiter = ''
waiter.extend(MonitorMixin)
wait_cond = waiter.new_cond
Thread.start do
$SAFE = 4
ret = Proc.new {|json|
eval(json.gsub(/(["'])/s*:/s*(['"0-9tfn/[{])/){"#{$1}=>#{$2}"})
}
waiter.synchronize do
wait_cond.signal
end
end
waiter.synchronize do
wait_cond.wait_while { ret.nil? }
end
return ret
end
@@parser = SafeJSON.build_safe_json
# Safely parse the JSON input
def SafeJSON.parse(input)
@@parser.call(input)
rescue SecurityError
return nil
end
end
包含这个Module,你就可以这样使用:peoples=SafeJSON.parse('{"peoples":[{"name":"site120","email":"site120@163.com","sex":"男"},{"name":"site120_2","email":"site120@163.com_2","sex":"男_2"}]}')
puts peoples["peoples"][1]["name"] #输出site120_2
rails通过RJS内置了对AJAX的支持,也许用到json的机会并不多,不过作为一种数据交换的方便格式,还是值的注意。
分享到:
相关推荐
1. **解析JSON**: 在Ruby中,可以使用`require 'json'`引入JSON库。然后,`JSON.parse`方法可以将JSON字符串转化为Ruby的数据结构,如哈希或数组。例如: ```ruby require 'json' json_string = '{"name":"John...
但是,如果你使用的是最新版本的 Ruby,可能已经安装了 gem,解析来我们就可以使用以下命令来安装Ruby JSON 模块: $gem install json 使用 Ruby 解析 JSON 以下为JSON数据,将该数据存储在 input.json 文件中: ...
在解析JSON时,如果遇到无效的JSON格式,`JSON.parse`会抛出`JSON::ParserError`。因此,应当在解析时捕获这个异常以提供适当的错误处理。 8. **编码设置** 如果需要处理非ASCII字符,可以设置`JSON.default_...
但是,如果你使用的是最新版本的 Ruby,可能已经安装了 gem,解析来我们就可以使用以下命令来安装Ruby JSON 模块: $gem install json 使用 Ruby 解析 JSON 以下为JSON数据,将该数据存储在 input.json 文件中:...
Ruby的`json`模块提供了`JSON.parse`和`JSON.generate`两个核心方法,分别用于解析JSON字符串和生成JSON格式的字符串。 #### 解析JSON ```ruby require 'json' json_string = '{"name": "John", "age": 30, "city...
Ruby解析JSON Ruby解析Json例子: json = '[a, B, C]' puts Unsafe #{unsafe_json (json).inspect} #输出Unsafe [a, B, C] Ruby解析Json把上面的json字符串解析成Array。这样的方法并不安全,比如: json = 'puts...
本文将深入探讨如何在Linux系统下使用Shell命令来解析JSON数据。 首先,我们介绍几个常用的Linux命令行工具,它们专门用于处理JSON格式的数据: 1. **`jq`**: `jq`是Linux下的一个强大的JSON处理器,它可以用来...
翻译=>到: 将nil转换为null 尝试解析JSON。 漂亮地打印JSON。执照MIT许可证(MIT)版权所有(c)2016VojtěchKusý 特此免费授予获得此软件和相关文档文件(“软件”)副本的任何人无限制地处理软件的权利,包括但...
在Ruby中,`jose`库可以用来生成和解析JWT,包括设置有效期限、添加自定义声明以及验证签名。 使用`jose`库时,你需要了解一些核心概念和方法,例如: 1. **Key Management**: JOSE支持多种加密和签名算法,如HMAC...
它提供了`JSON.parse`来解析JSON字符串和`JSON.generate`来生成JSON。对于更复杂的场景,`oj`或`yajl-ruby`等库可以提供更高的性能。 这些依赖包在处理JSON数据时,不仅可以进行基本的编码和解码,还能进行对象映射...
Ruby的JSON实现 描述 这是根据RFC 7159 的JSON规范的实现。 从版本1.0.0开始,将提供两个变体: 一个纯ruby变体,它依赖于ruby标准库的一部分iconv和stringscan扩展。 本地扩展变体要快得多,它可以用C或Java部分...
3. 在服务器端使用JSON:展示如何在诸如Node.js、Python的Django或Flask、Ruby on Rails等服务器端技术中使用JSON。 4. 在Web应用中使用JSON:详述JSON在Web前后端数据交互中的应用,例如使用AJAX与服务器通信。 5. ...
通过编写配置文件,该代码生成器能自动生成相应的bean,和解析json的代码。 你需要做的是,有一个ruby环境,将配置文件写在test.conf中,然后shell的重定向即可。 如生成Bean文件: ruby BeanGen.rb > Bean.java 生成...
在构建RESTful API时,数据通常以JSON(JavaScript Object Notation)格式传输,因为JSON轻量、易于解析,并且被广泛支持。Ruby中的Jbuilder库就是为了方便开发者创建JSON结构而设计的。 Jbuilder是一个Ruby gem,...
针对“Json使用需要依赖包”的主题,我们将详细介绍在不同编程语言中使用JSON所需的依赖包。 1. **Java** 在Java中,处理JSON的主要库有Jackson、Gson和org.json。Jackson是目前最流行的Java JSON库,它提供了高效...
JGrep是用于基于逻辑表达式解析JSON文档的命令行工具和API。 安装: jgrep可以作为gem来使用: gem install jgrep JGrep二进制用法: jgrep [expression] -i foo.json 或者 cat "foo.json" | jgrep ...
例如,`require 'json'`可以加载JSON库,然后使用`JSON.parse`方法解析JSON字符串为Ruby对象,`JSON.generate`则用于将Ruby对象转换为JSON格式的字符串。 在实际应用中,Ruby的灵活性和强大的库支持使其成为Web开发...
在Java中,有多个库可以帮助我们解析和生成JSON,如Gson、Jackson和json-lib。以下是对这三个库的详细介绍: 1. Gson: Gson是Google提供的一个开源库,用于将Java对象转换为JSON字符串,反之亦然。它提供了简单...