我正在从API获取响应并接收:
response:
job:
unit_count: "1"
slug: Answers
lc_tgt: ja
body_tgt: !binary |
5Zue562U
lc_src: en
body_src: Answers
job_id: "1948888"
opstat: ok
那个body_tgt值应该是几个日文字符(回答),但它们正在转换为安全运送。我在1.8.7,所以我不能强制编码。有没有办法解包()他们?
答案 0 :(得分:4)
这似乎是一个YAML文档,而不是JSON,使用YAML的二进制数据语言(后者又使用base64编码)。
Ruby内置的YAML解析库应该能够为您解析数据:
> x = YAML.load(' response:
job:
unit_count: "1"
slug: Answers
lc_tgt: ja
body_tgt: !binary |
5Zue562U
lc_src: en
body_src: Answers
job_id: "1948888"
opstat: ok')
=> {"opstat"=>"ok", "response"=>{"job"=>{"slug"=>"Answers",
"unit_count"=>"1", "lc_tgt"=>"ja", "lc_src"=>"en", "body_tgt"=>"回答",
"job_id"=>"1948888", "body_src"=>"Answers"}}}
为了生成直接嵌入UTF-8的YAML,而不是作为二进制对象进行转义,您可以使用ya2yaml,“又一个to_yaml”实现,它可以生成编码为UTF-8的输出。安装ya2yaml
gem,然后将其调用为:
> require 'ya2yaml'
> x.ya2yaml(:syck_compatible => true)