2014-10-03 41 views
1

我想将Psych生成的AST转储到JSON。我怎样才能做到这一点?将Psych的AST转换为JSON

gem 'psych' 
require 'psych' 
require 'json' 

ast = Psych.parse_stream("me: 1"); 

p ast 

ast.to_json不给我JSON树。

+0

http://docs.ruby-lang.org/en/2.1.0/Psych.html,有一个'to_json'方法多数民众赞成在工作创造一个'精极度紧张::访客:: JSONTree'对象。我想你需要以某种方式构建一个'JSONTree'对象。或者,如果'to_json'立即可用,您可以尝试。 – akostadinov 2015-07-06 13:45:17

回答

-1

你不想直接将AST转换为JSON。您首先将其转换为一个to_ruby的Ruby对象图。您的代码工作,如果改变了,像这样:

gem 'psych' 
require 'psych' 
require 'json' 

ast = Psych.parse_stream("me: 1"); 

p ast.to_ruby[0].to_json 
+0

这将返回'{“me”:“1”}'。我正在寻找AST。不是解析的对象 – Mohsen 2014-10-03 20:50:41