ruby - 在一个文件中处理多个 JSON 对象

标签 ruby json

我做了一些愚蠢的事情...我收集了大量的 json 数据并将其保存在一个文件中。我现在发现自己在尝试 JSON.parse(file) 时遇到错误,因为它的 JSON 对象在 JSON 对象之后。谁能建议我如何解析这些数据?结构如下所示。下一个条目是具有完全相同结构的对象。

{"purchase": 
  { 
   "amount": 34.595399, 
   "uid": 1282907706, 
   "user": 
          {
                 "id": xxxx
                 "name": "xxxx"
          }, 
    "dailycount": 135.82373100000001, 
    "productdetails": 
     {
          "type": "shoes"
     }, 
    "details": 
    {
          "gender": "male"
   }, 
   "createdin": "Asia/Tokyo", 
   "id": 147707740, 
   "comments": []}} 

最佳答案

问题当然是您没有有效的 json 对象。

irb(main):004:0> JSON.parse("{'foo':'bar'},{'foo':'baz'}")
JSON::ParserError: 705: unexpected token at '{'foo':'bar'},{'foo':'baz'}'
    from /usr/lib/ruby/gems/1.8/gems/json-1.4.6/lib/json/common.rb:146:in `parse'
    from /usr/lib/ruby/gems/1.8/gems/json-1.4.6/lib/json/common.rb:146:in `parse'
    from (irb):4

因此,我会在最后一个花括号结束之前添加一个 '"key": [' 和一个 ']'。使其成为有效的 json。

irb(main):018:0> json = '{"key" : [{"foo":"bar"}, {"foo":"baz"}]}'
=> "{\"key\" : [{\"foo\":\"bar\"}, {\"foo\":\"baz\"}]}"
irb(main):019:0> JSON.parse json
=> {"key"=>[{"foo"=>"bar"}, {"foo"=>"baz"}]}

关于ruby - 在一个文件中处理多个 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3583704/

相关文章:

ruby - 在 haml 中创建一个 th 标签,其 id 是一个 Ruby 变量

java - 将迭代器从 JSONObject 重写为 JSONArray

javascript - 如何复用XMLHttpRequest?

javascript - 以美元货币显示 JSON 值(前置 $ 美元符号)

ruby-on-rails - ActiveRecord :Module 的未定义方法 `belongs_to'

ruby - Rack 获取基于 session 的 cookie 时出错

ruby-on-rails - 如何使用 Ruby 客户端为服务器到服务器应用程序设置 Google Calendar API

ruby - 如何升级到 ruby​​ 1.9.2

IOS:带引号的ASIFormDataRequest

java - 根据位置过滤 Shodan 查询结果