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ý 特此免费授予获得此软件和相关文档文件(“软件”)副本的任何人无限制地处理软件的权利,包括但...
例如,可以使用“CSV”库来解析CSV格式的文件,使用“json”库来解析JSON格式的文件。对于更复杂的数据格式,如XML或自定义格式,Ruby的内置正则表达式功能将非常有用。通过正则表达式我们可以匹配并提取出所需的...
在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,...
本文将探讨如何使用Ruby脚本动态修改Xcode项目中的xcodeproj文件,以提高开发效率和减少人为错误。 在使用Ruby脚本修改xcodeproj文件之前,首先需要了解xcodeproj文件的本质。xcodeproj实际上是一个包含了XML结构的...
针对“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 ...