Q
解析JSON流
2
A
回答
0
更新:由於您需要檢查JS是否有效,您可以使用JSON.parse來檢查它是否爲有效的JSON,這應始終在Chrome中可用。您可以將您的arraybuffer轉換爲一個字符串並將其附加到累加器字符串上,每次迭代後對該字符串執行以下檢查。
function isValidJSON(str) {
try {
JSON.parse(str);
} catch (e) {
return false;
}
return true;
};
// assuming 16bit uint unicode chars
function ab2str(buf) {
return String.fromCharCode.apply(null, new Uint16Array(buf));
}
下面是一個例子回調函數可以使用:
jsonData = "";
function readJSONFromSocket(object readInfo) {
// Arraybuffer to string
partialJSONData = ab2str(readInfo.data);
// Loop through the chars until we get a valid JSON object
for (var x = 0; x < partialJSONData.length; x++) {
// Build up the JSON character by character
jsonData += partialJSONData.charAt(x);
if (isValidJSON(jsonData)) {
console.log(jsonData);
// Do something here
jsonData = "";
}
}
};
0
你見過https://github.com/creationix/jsonparse?看起來它假定了一個Node.js環境,但它不喜歡它將很難調整API以滿足您的需求。
0
我知道這個問題是前一段時間發佈的,但這裏是處理這個問題的好方法。
安裝節點JS,如果你想管的方法,因爲你的UNIX的粉絲在網頁上安裝NPM(節點包管理器)
npm install -g browserify
npm install -g JSONStream
echo "window.JSONStream = require('JSONStream');" > script.js
browserify script.js jsonstream.js
現在
var parseStream = new JSONStream('*');
while (var buffer = socket.read()) {
parseStream.write(buffer);
}
parseStream.on('data', function (obj) {
// obj is a parsed obj
})
。然後添加
npm install shoe
shoe('./socketName').pipe(parseStream);
相關問題
- 1. 解析JSON流
- 2. 解析與pyspark json串流
- 3. 用Argonaut解析JSON流
- 4. 安卓:如何解析BIG JSON流
- 5. 解析JSON在騾子3.2流量
- 6. 在iOS中解析連續的JSON流
- 7. 在解析json流時遇到問題
- 8. 如何解析JSON在騾流中?
- 9. 如何解析JSON輸入流
- 10. 流星:xlsx到json的解析
- 11. Twitter中的PHP解析JSON流
- 12. 流星解析JSON地理日期
- 13. C#中的Json流解析器windows phone
- 14. 連接失敗JSON流解析在IOS
- 15. 音頻流,NSTimer和解析JSON場景
- 16. JSON數組是可解析的嗎? (流解析器)
- 17. C#JSON解析。解析轉義JSON
- 18. JSON解析不解
- 19. 解析YouTube JSON
- 20. 解析JSON(C#)
- 21. 在解析JSON
- 22. 解析JSON Windows8
- 23. 解析JSON - Alamofire
- 24. 解析JSON 2
- 25. Golang JSON解析
- 26. 解析JSON
- 27. 解析大json
- 28. JSON解析[和]
- 29. PHP - 解析JSON
- 30. 解析只JSON
我想你可能錯過了一個把戲。 'readInfo.data'的類型是'ArrayBuffer',它只是一個字節數組。您首先需要使用任何編碼將其轉換爲文本,然後轉換爲JSON對象......我遇到的問題是知道何時有完整的JSON對象字符串,因此需要解析器。 – Cheetah
好的,一旦你已經轉換爲字符串,你可以使用我在更新中添加的函數來檢查它是否有效,它應該是無效的,直到你收到整個對象。 – silleknarf
......但是這回到了我在OP中討論的全部問題......我怎麼知道我什麼時候有完整的對象。在第一個緩衝區中,我可以得到'{.....',在第二個緩衝區中,我得到'..} {...} {...'。我無法抽出一個完整的對象......沒有解析器,這使我們回到原來的問題。 – Cheetah