Ruby:TypeError:无法将String转换为Integer

时间:2015-05-29 11:31:14

标签: ruby json parsing jruby

我有JSON回复。

result = {
  "owner":{
    "uid":"bb4123ac7950435eb516e2a47940b675",
    "firstName":"Tester",
    "lastName":"Test5577"
  }
}

我正在尝试提取“uid”,但收到以下错误。

Ruby:TypeError:无法将String转换为Integer

我的代码是:

@jdoc =JSON.parse(result)

@uid = @jdoc.fetch("owner").first.fetch("uid").to_i()   #Getting error here.

非常感谢您的支持。

4 个答案:

答案 0 :(得分:1)

代码中的细微更改应该能够获得正确的数据:

@jdoc = JSON.parse(result)
@uid = @json['owner']['uid'] #=> "bb4123ac7950435eb516e2a47940b675"

此外,您正在尝试将字符串:“bb4123ac7950435eb516e2a47940b675”转换为代码中的整数:to_i()。其中0为uid,因为uid是一串字母数字字符,而不是一些随机数/整数的组合。我建议您将该信息保存在varchar列中。

答案 1 :(得分:0)

您可以按如下方式访问uid:

@jdoc = JSON.parse(result)
@uid = @json['owner']['uid']
@uid = Integer(@uid) rescue 0

答案 2 :(得分:0)

是否可以在@jdoc

之后打印JSON.parse(result)内的内容

btw uid包含字符串,因此您将收到0作为带整数的输出

"bb4123ac7950435eb516e2a47940b675".to_i => # 0
"111".to_i => # 111

答案 3 :(得分:0)

你可以试试这个。我希望这会对你有所帮助。

@uid = @jdoc.fetch("owner").first.fetch("uid").to_i()

## OUTPUT

# If you do it like this you will get follwing error
TypeError: can't convert String into Integer

但是,如果你做了以下,你就会得到渴望的结果。

@uid = @jdoc.fetch("owner").fetch("uid")

##OUTPUT

"bb4123ac7950435eb516e2a47940b675"