ruby - Yajl::ParseError:词法错误:json 文本中的字符无效

标签 ruby regex json parsing yajl

使用 YAJL Ruby 解析时出现以下错误

2.0.0-p0 :048 >   Yajl::Parser.parse "#{resp.body}"
Yajl::ParseError: lexical error: invalid char in json text.
                                  {"id"=>2126244, "name"=>"bootstrap",
                     (right here) ------^

我怎样才能摆脱它?

更新(向霍华德坦克):

这只是将 to_json 方法添加到 resp.body 中:

2.0.0-p0 :183 > parsed = Yajl::Parser.parse resp.body.to_json
 => {"id"=>2126244, "name"=>"bootstrap", "full_name"=>"twitter/bootstrap", "owner"=>{"login"=>"twitter", "id"=>50278, ...

然后就可以了:

2.0.0-p0 :184 > parsed.class
 => Hash 
2.0.0-p0 :185 > parsed["id"]
 => 2126244 
2.0.0-p0 :186 > parsed["name"]
 => "bootstrap" 
2.0.0-p0 :187 > parsed["full_name"]
 => "twitter/bootstrap" 
2.0.0-p0 :188 > parsed["owner"]
 => {"login"=>"twitter", "id"=>50278, "avatar_url"=>"https://secure.gravatar.com/avatar/2f4a8254d032a8ec5e4c48d461e54fcc?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-org-420.png", "gravatar_id"=>"2f4a8254d032a8ec5e4c48d461e54fcc", "url"=>"https://api.github.com/users/twitter", "html_url"=>"https://github.com/twitter", "followers_url"=>"https://api.github.com/users/twitter/followers", "following_url"=>"https://api.github.com/users/twitter/following", "gists_url"=>"https://api.github.com/users/twitter/gists{/gist_id}", "starred_url"=>"https://api.github.com/users/twitter/starred{/owner}{/repo}", "subscriptions_url"=>"https://api.github.com/users/twitter/subscriptions", "organizations_url"=>"https://api.github.com/users/twitter/orgs", "repos_url"=>"https://api.github.com/users/twitter/repos", "events_url"=>"https://api.github.com/users/twitter/events{/privacy}", "received_events_url"=>"https://api.github.com/users/twitter/received_events", "type"=>"Organization"} 
2.0.0-p0 :189 > 

只是因为 resp.body 不是 json :

2.0.0-p0 :197 > print resp.body
{"id"=>2126244, "name"=>"bootstrap", ... 

2.0.0-p0 :196 > print resp.body.to_json
{"id":2126244,"name":"bootstrap", ...

最佳答案

您的文本不是允许的 JSON 对象。不应出现标记 =>,而应出现冒号 :

{
    "id" : 2126244,
    "name" : "bootstrap",
    ...
}

关于ruby - Yajl::ParseError:词法错误:json 文本中的字符无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15728050/

相关文章:

javascript - 使用数据库中的数据和生成的 JavaScript 创建 JSON

ruby-on-rails - 平均嵌入在 ruby​​ 哈希中的值

使用正则表达式的 Ruby 电子邮件验证

java - java中的正则表达式字符类不一致

java - 单行(DOTALL)正则表达式匹配比我想要的更多

regex - url 中的正则表达式。 Django 2.0 中的 py

json - Set-Cookie header 在响应中,但浏览器未在下一个请求中设置 Cookie

javascript - 使用 Javascript 在 Rails 应用程序中显示/隐藏 DIV 未按预期工作

ruby - 在 Ruby 中从 Unix 套接字读取/写入

java - Gson.toJson() 项目排序错误