2016-11-06 14 views
0

最近Rを使用し始めました.json以外の形式を取得するためにR内のjsonを解析するタスクがあります。このため、私は"fromJSON()"関数を使用しています。私はjsonをテキストファイルとして解析しようとしました。私はそれを1行のエントリだけで実行すると、正常に実行されます。私は複数行のエントリでそれをしようとする。しかし、私は次のエラーを取得する:jsonをRに解析しようとしているときにエラーが発生しました

fromJSON("D:/Eclairs/Printing/test3.txt") 
Error in feed_push_parser(readBin(con, raw(), n), reset = TRUE) : 
    lexical error: invalid char in json text. 
            [{'CategoryType':'dining','City': 
        (right here) ------^ 

> fromJSON("D:/Eclairs/Printing/test3.txt") 
Error in feed_push_parser(readBin(con, raw(), n), reset = TRUE) : 
    parse error: trailing garbage 
      "mumbai","Location":"all"}] [{"JourneyType":"Return","Origi 
        (right here) ------^ 

> fromJSON("D:/Eclairs/Printing/test3.txt") 
Error in feed_push_parser(readBin(con, raw(), n), reset = TRUE) : 
    parse error: after array element, I expect ',' or ']' 
      :"mumbai","Location":"all"} {"JourneyType":"Return","Origin 
        (right here) ------^ 

のみ、上記のエラーは、私はJSONテキストを解析しようとしている三つの異なるフォーマットによるものであるが、結果は同じでした場所が変更されたことが示唆された。 このエラーの原因を特定するのに役立ちますか、またはタスクを実行するより効率的な方法がある場合は助けてください。

私が持っている元のファイルは、複数の列を持つExcelシートで、これらの列の1つはjsonテキストで構成されています。これは、より効率的に行うことができる場合も示唆してください

fromJSON("D:/Eclairs/Printing/test3.txt") 

:私は今試した方法は、単にJSON列を抽出し、タブ区切りテキストに変換し、次にとしてそれを解析することです。 Excelのすべての列を非jsonテキストにもマップする必要があります。

Example: 
[{"CategoryType":"dining","City":"mumbai","Location":"all"}] 
[{"CategoryType":"reserve-a-table","City":"pune","Location":"Kothrud,West Pune"}] 
[{"Destination":"Mumbai","CheckInDate":"14-Oct-2016","CheckOutDate":"15-Oct-2016","Rooms":"1","NoOfPax":"3","NoOfAdult":"3","NoOfChildren":"0"}] 
+0

フルJSON、または少なくとも完全なフラグメントを示している場合それは役立つかもしれません誤っている部分の –

+1

JSONオブジェクトの間にコンマがないと思っています – SymbolixAU

+0

別の行にカンマを置くことはありません。タブに分割されたtxtファイルに変換されています。コンマを置く必要があるのは、データを手動で変更する必要があるからです... – eclairs

答えて

1

繰り返し、readLines()と線でテキスト行を読み込む成長のリストにJSONのデータフレームを節約考えてみましょう:

library(jsonlite) 

con <- file("C:/Path/To/Jsons.txt", open="r") 

jsonlist <- list() 
while (length(line <- readLines(con, n=1, warn = FALSE)) > 0) { 
    jsonlist <- append(jsonlist, list(fromJSON(line))) 
} 
close(con) 

jsonlist  
# [[1]] 
# CategoryType City Location 
# 1  dining mumbai  all 

# [[2]] 
#  CategoryType City   Location 
# 1 reserve-a-table pune Kothrud,West Pune 

# [[3]] 
# Destination CheckInDate CheckOutDate Rooms NoOfPax NoOfAdult NoOfChildren 
# 1  Mumbai 14-Oct-2016 15-Oct-2016  1  3   3   0 
関連する問題