JSON解析器的行为不同

时间:2013-06-04 17:26:38

标签: ruby json rubygems

我正在尝试解析以下名为result的字符串:

{
 "status":0,
 "id":"faxxxxx-1",
 "hypotheses":[
    {"utterance":"skateboard","confidence":0.90466744},
    {"utterance":"skate board"},
    {"utterance":"skateboarding"},
    {"utterance":"skateboards"},
    {"utterance":"skate bored"}
 ]
}

在Ruby 1.8中使用obj = JSON.parse(result)和json gem。

有问题的命令是:

puts "#{obj['hypotheses'][0]}"

我的旧工作站(其硬盘死机)给了我:

{"utterance" => "skateboard", "confidence" => 0.90466744}

我当前的工作站给了我:

confidence0.90466744utteranceskateboard

我没有设置旧工作站,所以我不知道安装了哪种软件包,而目前的软件包是。

为什么完全相同的脚本的输出有差异? 如何使当前的看起来像旧的?

我对这个btw完全不熟悉。

1 个答案:

答案 0 :(得分:3)

在Ruby 1.8中,Hash#to_s只是将所有元素连接在一起而没有空格,相当于to_a.flatten.join('')

在Ruby 1.9中,Hash#to_sinspect的别名,可以生成格式良好的输出。

在两种情况下获得相同的东西:

puts obj['hypotheses'][0].inspect

同样适用于Array。