2013-01-22 53 views
1

我有一個非常大的Json文件。它包含27000條記錄。缺少Json文件中的引號

記錄看起來是這樣的:

{ 
adlibJSON: { 
recordList: { 
record: [ 
{ 
@attributes: { 
priref: "4372", 
created: "2011-12-09T23:09:57", 
modification: "2012-08-11T17:07:51", 
selected: "False" 
}, 
acquisition.date: [ 
"1954" 
], 
acquisition.method: [ 
"bruikleen" 
], 
association.person: [ 
"Backer, Bregitta" 
], 
association.subject: [ 
"heraldiek" 
], 
collection: [ 
"Backer, collectie" 
], ... ... 

的問題是,這不是有效的JSON。名稱缺少引號。

例如像acquisition.date應該"acquisition.date":

我需要修改這個大的JSON文件,並添加所有的引號,否則該文件不具有例如D3.js

什麼是解析修復這個Json文件的最好方法是什麼?

+0

有多少不同的名稱有哪些?也許只是在記事本2(或你最喜歡的文本編輯器)中查找和替換? –

+0

很多,差不多50 ... – user1386906

+0

我喜歡RegEx的想法呢! –

回答

2

我會用一個體面的文本編輯器與正則表達式查找和替換功能(例如,Visual Studio,UltraEdit等)。

然後做:找

^\s*(\w+\.\w+)\s*:

"$1": 

更換或者你可以使用PowerShell:

$allText = gc yourfile.txt 
$allText -replace '^\s*(\w+\.\w+)\s*:', '"$1":' 
+0

謝謝你的幫助。我應該如何做到這一點與他們的兩個點的名稱?這隻會選擇一個點的名稱 – user1386906

+1

更改爲:^ \ s *((\ w + \。\ w +)+)\ s *: – aquinas

+0

非常感謝您:) – user1386906

0

如果你可以在文本編輯器打開它,我想你可以簡單地使用替代功能:

], --> ]," 

: [ --> ": [ 

如果您JSON格式一致,不包含這些字符,這應該工作。

-

請注意,您必須自己手動編輯第一個鍵。

+0

這是聰明的,只有我需要手動做的是例如'@attributes:' – user1386906