【问题标题】:Google translate free api resposne to JSON Array in ruby谷歌将免费的 api 响应翻译为 ruby​​ 中的 JSON 数组
【发布时间】:2016-11-22 11:13:31
【问题描述】:

我正在使用 ruby​​ on rails 开发一个简单的 API,它将与 Google 翻译 API 连接(使用简单的技巧免费获得响应)并处理输出。

我的请求看起来像:

https://translate.googleapis.com/translate_a/single?client=gtx&sl=en&tl=es&dt=t&q=build

我从 Google 服务器获得的响应如下(无法获得 json 格式的响应,因为将客户端设置为“p”不再有效)

[[["contruir","build",,,1]],,"en"]

在 java 中,我可以通过创建 JSONArray 对象轻松处理该响应,但是我在我的 ruby​​ on rails 应用程序中找不到这样做的方法。

我正在使用 rest-client 发出请求

@response=RestClient.post('http://myrequestblabla')
@jsonArray = JSON.parse(response.body)

最后一行以

失败

一个 JSON 文本必须至少包含两个八位字节!

有没有办法处理这样的回复?理想情况下将其分解为 JSONArray,但很高兴看到任何简洁的解决方案。

谢谢,

【问题讨论】:

  • 给出您给出的示例的预期 JSON 输出,因为我们可能不知道 Java 的 JSONArray 做了什么。

标签: ruby-on-rails arrays json ruby


【解决方案1】:

你可以使用 YAML 模块来解析这个字符串。首先在逗号之间插入空值,使字符串如下所示:

[[["construir","build",null,null,1]],null,"en"]

通过gsub对字符串进行正则表达式,并使用YAML模块的load方法:

require 'yaml'
str = RestClient.post('http://myrequestblabla')
YAML::load(str.gsub(/(?<=,),/,'nil,'))

你会得到一个数组[[["construir", "build", nil, nil, 1]], nil, "en"]

【讨论】:

    猜你喜欢
    • 2018-02-05
    • 2015-09-21
    • 1970-01-01
    • 2019-02-01
    • 2015-02-14
    • 2017-04-29
    • 2011-12-26
    • 1970-01-01
    • 2010-10-10
    相关资源
    最近更新 更多