2015-10-30 64 views
0

我開始轉義字符在JSON數據

mentions = GET(final_url, sig) 
    json = content(mentions) 
下一行是

json2 = jsonlite::fromJSON(toJSON(json)) 

給錯誤

我的代碼崩潰...

Error: lexical error: invalid character inside string. 
     Foundation and 42nd President of the United States. Follow 
       (right here) ------^ 

我處理與一些JSON數據。 它的一小塊看起來像這樣。也就是說,這是我的變量「json」的輸出。

Lots of JSON before this.... 

    $statuses[[99]]$retweeted_status$user$location 
    [1] "New York, NY" 

    $statuses[[99]]$retweeted_status$user$description 
    [1] "Founder, Clinton Foundation and 42nd President \003of the United    States. Follow @clintonfdn for \003more on my work around the world." 

    $statuses[[99]]$retweeted_status$user$url 
    [1] "http://t.co/gI8TIlAJHk" 

正如你所看到的,在JSON數據中嵌入了一個轉義字符\ 003。

我正在處理同一個文件中的數百條好信息,但是現在可能會發生這種情況。當然這次它發生在「描述」中,但它可能發生在推文中,位置中,描述中等。

有沒有一種方法可以在嘗試執行jsonlite之前從JSON中「清除」轉義字符? fromJSON(toJSON())來避免我的代碼在這裏崩潰?

+0

我的一個文本編輯器(在Mac上)有一個「刪除NonASCII字符」工具。您可以嘗試通過這樣的編輯步驟傳遞您的JSON文件。 –

回答

0

你可以嘗試財產以後這樣的:

json2 <- gsub("[\001-\026]*", "", json) 

下面是一個簡單的「戰略測試」

> gsub("[\003-\005]*", '', "\003\004\005\027abc") 
[1] "\027abc" 

如果你需要一個更好的測試,你應該張貼的​​輸出。

+0

感謝您的建議! 我試圖轉換我的原始json轉換之前。 也就是說,我所做的:JSON = GSUB( 「[\ 001- \ 026] *」, 「」,JSON)讓我重寫了我的JSON可變我做json2 = jsonlite :: blahblahblah之前。做你的想法給我「toJSON(json)中的錯誤:無法轉義字符串。字符串不是utf8」 – Jibril

+0

要添加,我試圖按要求做dput(頭(json))。 R環境出錯,只能部分顯示。我仍然很不熟悉,所以我不能提供它。我認爲你的方法雖然是東西。將調查轉換爲UTF8。 – Jibril