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的机会并不多,不过作为一种数据交换的方便格式,还是值的注意。
分享到:
相关推荐
ruby解析jsonruby解析
但是,如果你使用的是最新版本的 Ruby,可能已经安装了 gem,解析来我们就可以使用以下命令来安装Ruby JSON 模块: $gem install json 使用 Ruby 解析 JSON 以下为JSON数据,将该数据存储在 input.json 文件中: ...
但是,如果你使用的是最新版本的 Ruby,可能已经安装了 gem,解析来我们就可以使用以下命令来安装Ruby JSON 模块: $gem install json 使用 Ruby 解析 JSON 以下为JSON数据,将该数据存储在 input.json 文件中:...
Ruby解析JSON Ruby解析Json例子: json = '[a, B, C]' puts Unsafe #{unsafe_json (json).inspect} #输出Unsafe [a, B, C] Ruby解析Json把上面的json字符串解析成Array。这样的方法并不安全,比如: json = 'puts...
翻译=>到: 将nil转换为null 尝试解析JSON。 漂亮地打印JSON。执照MIT许可证(MIT)版权所有(c)2016VojtěchKusý 特此免费授予获得此软件和相关文档文件(“软件”)副本的任何人无限制地处理软件的权利,包括但...
Ruby的JSON实现 描述 这是根据RFC 7159 的JSON规范的实现。 从版本1.0.0开始,将提供两个变体: 一个纯ruby变体,它依赖于ruby标准库的一部分iconv和stringscan扩展。 本地扩展变体要快得多,它可以用C或Java部分...
通过编写配置文件,该代码生成器能自动生成相应的bean,和解析json的代码。 你需要做的是,有一个ruby环境,将配置文件写在test.conf中,然后shell的重定向即可。 如生成Bean文件: ruby BeanGen.rb > Bean.java 生成...
JGrep是用于基于逻辑表达式解析JSON文档的命令行工具和API。 安装: jgrep可以作为gem来使用: gem install jgrep JGrep二进制用法: jgrep [expression] -i foo.json 或者 cat "foo.json" | jgrep ...
用于simdjson的Ruby包装器(每秒解析千兆字节JSON)FastJsonparser用于Ruby的最快的Json解析器用于simdjson的Ruby包装器(每秒解析千兆字节)simdjson库使用常用的SIMD指令和微并行算法来解析JSON的速度比其他方法快...
multi_json, JSON处理的通用可以切换后端 MultiJSON 许多 ruby 库解析 JSON,每个人都有自己喜欢的JSON编码器。 而不是选择一个JSON编码器并强制使用库的用户,而是使用 MultiJSON,这将简单地选择最快的JSON编码器...
moran(mo-RAN)是的简单JSON解析器和生成器。 它的提供了一个Ruby包装器 moran模拟标准的Ruby JSON API,提供parse和generate方法: hash = Moran . parse ( json_string ) json_string = Moran . generate ( ...
Ruby宝石,用于解析包含微格式HTML文档。 主要特点 与和语法兼容。 提供一个用于从URL,文件或字符串中提取微格式。 入门 在安装和使用microformats-ruby之前,您需要安装Ruby 2.4.10(或更高版本)。 建议您使用...
保存首选语法设置•在“ Chrome开发工具元素”标签中添加“ JSON”窗格以查看应用程序/ json脚本标签的解析内容•JSONP支持•快速,甚至在长页面上使用•在任何有效的JSON页面上均可使用– URL无关紧要•语法突出...
crack, 真正简单的JSON和XML解析,从Merb和 Rails 裂纹 真正简单的JSON和XML解析,从Merb和 Rails 。 XML解析器从Merb中提取出来,JSON解析器从 Rails 中剥离。 我没有信用,只是打包供大家使用,方便使用。兼容性...
这是Nagios的插件,将从HTTP响应中解析JSON。 它是用Ruby编写的,已知可以在1.8.7、1.9.3和2.4.0版本中使用。 用法 Usage: ./check_http_json.rb -u <URI> -e <element> -w <warn> -c <crit> -h, --help Help ...
ruby to_json.rb 将json转换为rvdata ruby to_rvdata.rb 适用于RPG Maker VX Ace 将rgss3 / to_json2 / to_rvdata2.rb放入您的项目文件夹。 将rvdata2转换为json ruby to_json2.rb 将json转换为rvdata2 ruby to...
一切都从一个文档开始,特别是一个Subjoin::Document —— 相当于一个,您可以使用 URI 创建它: require "subjoin" doc = Subjoin::Document.new(URI("http://example.com/articles")) (此处的所有示例均基于中...
JSON :: LD将 LD解析并序列化为并实现扩展,压缩和成帧API接口。 它还从HTML提取JSON-LD。 JSON :: LD现在可以用于根据RDFS / OWL定义创建上下文,并且可以选择包含本体本身的JSON-LD表示形式。 当前可通过script/...