Ruby : TypeError: can't convert String into Integer

Ruby : TypeError: can't convert String into Integer

我有 JSON 回复。

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

我正在尝试提取 "uid" 但出现以下错误。

Ruby:类型错误:无法将字符串转换为整数

我的代码是:

@jdoc =JSON.parse(result)

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

非常感谢您的支持。

您可以通过以下方式访问uid:

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

你能在JSON.parse(result)

之后打印出@jdoc里面的内容吗

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

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

代码中的一个小改动应该会得到正确的数据:

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

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

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

@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"