如何从Google API获得漂亮/令人敬畏的打印响应

时间:2018-01-04 16:06:16

标签: ruby-on-rails json ruby

我从Gmail API的成功通话中得到以下回复:

#<Google::Apis::GmailV1::Profile:0x00007f9ad2160210 @email_address="email@example.com", @history_id=15581926, @messages_total=174760, @threads_total=127619>

但是,当我使用awesome_print或pretty print(两者都通过User.first等测试输出预期格式)将其打印到控制台时,它不会将响应重新格式化为可读格式。 / p>

我试过了

ap JSON.parse(response)

我得到了

no implicit conversion of Google::Apis::GmailV1::Profile into String

我确信我不了解API的响应格式以及awesome_print的期望。有没有一种方法可以解析响应,使其在控制台中更具可读性?

2 个答案:

答案 0 :(得分:0)

Google::Apis::GmailV1::Profile是一个简单的类,没有实现任何可以帮助它进行漂亮的打印(除to_h外,请参见下文。)

你可以自己做:

Google::Apis::GmailV1::Profile.prepend(Module.new do
  def pp
    %i|email_address history_id messages_total threads_total|.map do |attr|
      [attr, public_send(attr)]
    end.to_h
  end
end)

并使用response.pp来打印它。或者,或者,只需使用它默认提供的内容:response.to_h

答案 1 :(得分:0)

将响应转换为哈希是解决方案。

val rdd = myRDD.mapPartitions{ iter =>
  val modCol = ???
  iter.map(
    x => {
      (x.getId, x.getAttribute(modCol))
  })
}