2016-11-06 123 views
0

我最近開始使用R,並且有一個關於在R中解析json以獲得非json格式的任務。爲此,我正在使用「fromJSON()」函數。我試圖將json解析爲文本文件。當我只用一行記錄就可以成功運行。但是,當我嘗試它與多行的條目,我得到以下錯誤:嘗試將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表格,其中一列包含json文本。我現在嘗試的方法是通過提取只是JSON列,並將其轉換爲製表符分隔文本,然後解析它作爲:

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

請還建議如果這可以更有效地完成。我需要將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 dataframes到越來越多:

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