【问题标题】:How to solve a JSON parse error: 'no implicit conversion of String into Integrer'?如何解决 JSON 解析错误:“没有将字符串隐式转换为整数”?
【发布时间】:2013-12-18 03:29:46
【问题描述】:

我正在为一个正在进行的项目学习 Twitter 搜索 API。我可以连接并收到“200”响应。以下代码:

require 'rubygems'
require 'oauth'
require 'json'

=begin
  __code for oauth and creating response__
=end

def print_results(tweets)
  tweets.each do |tweet|
    puts tweet
  end
end

if response.code == '200' then
  tweets = JSON.parse(response.body)
  print_results(tweets)
end

将此结果打印到屏幕上:

statuses
{"metadata"=>{"result_type"=>"recent", "iso_language_code"=>"es"}, "created_at"=>"Mon Dec 02 11:10:53 +0000 2013", "id"=>407466896939044864, "id_str"=>"407466896939044864", "text"=>"Y \"Thérèse\" me recordó sobremanera a \"Madame Bovary\". A mi parecer ambas igual de insulsas.", "source"=>"<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android</a>", "truncated"=>false, "in_reply_to_status_id"=>nil, "in_reply_to_status_id_str"=>nil, "in_reply_to_user_id"=>nil, "in_reply_to_user_id_str"=>nil, "in_reply_to_screen_name"=>nil, "user"=>{"id"=>159480381, "id_str"=>"159480381", "name"=>"our last autumn", "screen_name"=>"RoxyVarlow", "location"=>"Valencia", "description"=>"Perdóname por lo que pueda hacer cuando no te recuerde.", "url"=>"http://t.co/AjyasSdTXb", ......

但是当我尝试使用 JSON 解析它并提取 twit 的文本时,可以使用:

def print_results(tweets)
  tweets.each do |tweet|
    puts tweet['statuses'][0]['text']
  end
end

或与:

puts tweet['text']

我收到一个错误:

rb:17:in `[]': no implicit conversion of String into Integer (TypeError)

我做错了什么?我应该如何从响应中提取推文的文本?

【问题讨论】:

  • 我们需要一个原始 JSON 样本。否则,很难判断您的代码是如何错误处理结果的。

标签: ruby json parsing twitter typeerror


【解决方案1】:

这段代码解决了我的问题:

if response.code == '200' then
  result = JSON.parse(response.body)
  result['statuses'].each do |result|
  puts result
  puts "#{result['user']['screen_name']} : #{result['text']}"
end

似乎 response.body 包含在“状态”中,所以我需要遍历状态的每个成员才能访问推文信息。

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 2016-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-24
    • 2020-04-15
    • 1970-01-01
    • 2015-04-23
    相关资源
    最近更新 更多