2016-11-06 4 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 텍스트로 구성되어 있습니다. 이보다 효율적으로 할 수 있으면

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의 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 
관련 문제