1

我正在尝试解析以下称为结果的字符串:

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

使用obj = JSON.parse(result)在 Ruby 1.8 中与 json gem 一起

有问题的命令是:

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

我的旧工作站(其硬盘驱动器死了)给了我:

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

我目前的工作站给了我:

confidence0.90466744utteranceskateboard

旧的工作站不是我设置的,所以我不知道安装了什么样的软件包,而现在的这个是。

为什么完全相同的脚本的输出会有所不同?如何让当前的看起来像旧的?

顺便说一句,我对这个完全陌生。

4

1 回答 1

3

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

在 Ruby 1.9 中,Hash#to_s它是一个别名inspect并产生格式良好的输出。

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

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

同样的事情也适用于数组。

于 2013-06-04T18:11:04.897 回答