【发布时间】:2011-05-09 10:38:53
【问题描述】:
给定以下格式的字符串(Posterous API 以这种格式返回帖子):
s="\\u003Cp\\u003E"
如何将其转换为实际的 ascii 字符,例如 s="<p>"?
在 OSX 上,我成功使用了 Iconv.iconv('ascii', 'java', s),但一旦部署到 Heroku,我收到了 Iconv::IllegalSequence 异常。我猜 Heroku 部署到的系统不支持java 编码器。
我正在使用HTTParty 向Posterous API 发出请求。如果我使用 curl 发出相同的请求,那么我会 not 得到双斜杠。
来自 HTTParty github 页面:
自动将 JSON 和 XML 解析成 基于响应的红宝石哈希 内容类型
Posterous API 返回 JSON(无双斜杠)并且 HTTParty 的 JSON 解析正在插入双斜杠。
这是我使用 HTTParty 发出请求的方式的一个简单示例。
class Posterous
include HTTParty
base_uri "http://www.posterous.com/api/2"
basic_auth "username", "password"
format :json
def get_posts
response = Posterous.get("/users/me/sites/9876/posts&api_token=1234")
# snip, see below...
end
end
将明显的信息(用户名、密码、site_id、api_token)替换为有效值。
在剪切点,response.body 包含一个 JSON 格式的 Ruby 字符串,response.parsed_response 包含一个 Ruby 哈希对象,HTTParty 通过解析来自 Posterous API 的 JSON 响应创建。
在这两种情况下,\u003C 等 unicode 序列都已更改为 \\u003C。
【问题讨论】:
-
您在系统上使用的 ruby 版本是否与在 heroku 上使用的版本相同?
-
看起来他们都在运行 1.8.7。
-
HTTParty 有一个
format命令,可让您指定返回和解析的格式。你有那一套吗? -
另外,如果您添加一些示例代码来展示您如何拨打电话,这会有所帮助。
-
@Greg 感谢您提供有关 HTTParty#format 的提示。我一直在寻找类似的东西。不幸的是,添加
format :json根本不会影响结果。
标签: ruby json escaping httparty posterous