2016-11-06 124 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