2010-08-27 90 views
3

我做了一件愚蠢的事情......我收集了大量的json數據並將其保存在一個文件中。由於JSON對象之後的JSON對象,我現在發現自己在嘗試JSON.parse(文件)時發現錯誤。任何人都可以建議我如何解析這些數據?結構如下所示。下一個條目是具有完全相同結構的對象。在一個文件中處理多個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": []}} 

回答

3

您可以使用搜索&在文本編輯器替換?我的意思是,如果你有這樣的代碼塊:

{ 
    "a" : "b", 
    "c" : "d" 
} 
{ 
    "a" : "e", 
    "c" : "f", 
} 

您可以通過搜索}\s*{序列,並與}, {序列替換到這樣的事情把它:

[ 
{ 
    "a" : "b", 
    "c" : "d" 
}, 
{ 
    "a" : "e", 
    "c" : "f", 
} 
] 
4

問題當然,你沒有一個有效的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"}]} 
相關問題