2017-03-09 41 views
2

我已經在我的項目一個JSON文件看起來像這樣:如何在JavaScript中逐行循環換行符分隔的json?

{"_id":707860,"name":"Hurzuf","country":"UA","coord":{"lon":34.283333,"lat":44.549999}} 
{"_id":519188,"name":"Novinki","country":"RU","coord":{"lon":37.666668,"lat":55.683334}} 
{"_id":1283378,"name":"Gorkhā","country":"NP","coord":{"lon":84.633331,"lat":28}} 

我不知道如何通過每個線路迴路把它放在一個陣列。我怎樣才能做到這一點?

+0

您能夠打開文件,並在看過嗎? –

+1

所以你想採取一個無效的結構,並把它變成一個對象的數組。加載文件,分割新行,用逗號連接,用'['和']'和JSON包裝,並對其進行解析。或修復它,所以它是有效的開始,而不必處理。 – epascarello

+0

@epascarello在另一個格式中封裝格式非常常見。線分隔的JSON流非常常見。這可能是處理JSON對象流的最好,最直接的方法。你願意永遠擁有一個無限大的永不結束的數組和緩衝區數據嗎?你寧願破解解析器還是實現流解析器?只要你知道你在做什麼並且有一個很好的用例,那麼線分隔的JSON就沒有問題。 – Brad

回答

3

分割新行,用逗號加入,用括號括起來並解析它。

var str = `{"_id":707860,"name":"Hurzuf","country":"UA","coord":{"lon":34.283333,"lat":44.549999}} 
 
{"_id":519188,"name":"Novinki","country":"RU","coord":{"lon":37.666668,"lat":55.683334}} 
 
{"_id":1283378,"name":"Gorkhā","country":"NP","coord":{"lon":84.633331,"lat":28}}` 
 

 
var lines = str.split(/\n/); 
 
var wrapped = "[" + lines.join(",") + "]"; 
 
var obj = JSON.parse(wrapped); 
 

 
console.log(obj);

更好的解決方案解決什麼爲您提供了格式給你正確的結構與開始了。

1

試試下面的代碼:

var myVar = `{"_id":707860,"name":"Hurzuf","country":"UA","coord":{"lon":34.283333,"lat":44.549999}} 
 
{"_id":519188,"name":"Novinki","country":"RU","coord":{"lon":37.666668,"lat":55.683334}} 
 
{"_id":1283378,"name":"Gorkhā","country":"NP","coord":{"lon":84.633331,"lat":28}}`; 
 

 
var myArray = []; 
 
myVar.split('\n').map(function (value) { 
 
    myArray.push(JSON.parse(value)); 
 
}); 
 
console.log(myArray);