json의 경우 다음 스 니펫을 사용할 수 있습니다.
커피 스크립트
make_parser = (callback)->
state_parse=0
level=0
buffer=0
parse_out = (data)->
m = data.match /[{}"]/
if m?
c = m[0]
buffer += data[..m.index]
remaining = data[m.index+1..]
if c == "}"
level -= 1
if level == 0
callback JSON.parse(buffer)
init_state()
else if c == "{"
level += 1
else if c == '"'
state_parse = parse_string
state_parse remaining
else
buffer += data
parse_string = (data)->
m = data.match /["\\]/
if m?
c = m[0]
buffer += data[..m.index]
remaining = data[m.index+1..]
transition =
'\\': parse_special
'\"': parse_out
state_parse = transition[c]
state_parse remaining
else
buffer += data
parse_special = (data)->
if data.length > 0
buffer += data[0]
state_parse = parse_string
state_parse data[1..]
init_state =->
state_parse = parse_out
level = 0
buffer = ""
init_state()
(data)->
state_parse data
fs = require "fs"
s = fs.createReadStream "somefile.json"
s.setEncoding 'utf8'
s.on "data", make_parser (d)->
console.log "-----"
console.log d
자바 스크립트 :
var에 FS, make_parser, S;
make_parser = function(callback) {
var buffer, init_state, level, parse_out, parse_special, parse_string, state_parse;
state_parse = 0;
level = 0;
buffer = 0;
parse_out = function(data) {
var c, m, remaining;
m = data.match(/[{}"]/);
if (m != null) {
c = m[0];
buffer += data.slice(0, m.index + 1 || 9e9);
remaining = data.slice(m.index + 1);
if (c === "}") {
level -= 1;
if (level === 0) {
callback(JSON.parse(buffer));
init_state();
}
} else if (c === "{") {
level += 1;
} else if (c === '"') {
state_parse = parse_string;
}
return state_parse(remaining);
} else {
return buffer += data;
}
};
parse_string = function(data) {
var c, m, remaining, transition;
m = data.match(/["\\]/);
if (m != null) {
c = m[0];
buffer += data.slice(0, m.index + 1 || 9e9);
remaining = data.slice(m.index + 1);
transition = {
'\\': parse_special,
'\"': parse_out
};
state_parse = transition[c];
return state_parse(remaining);
} else {
return buffer += data;
}
};
parse_special = function(data) {
if (data.length > 0) {
buffer += data[0];
state_parse = parse_string;
return state_parse(data.slice(1));
}
};
init_state = function() {
state_parse = parse_out;
level = 0;
return buffer = "";
};
init_state();
return function(data) {
return state_parse(data);
};
};
fs = require("fs");
s = fs.createReadStream("somefile.json");
s.setEncoding('utf8');
s.on("data", make_parser(function(d) {
console.log("-----");
return console.log(d);
}));
을 필요로하여 JSON에 관한 해답이 될 수 필요가 당신의 XML 스트리밍에 관한 해답이 될 수 구체적인 답변을 제공하지만 스트림 데이터를 구문 분석하는 데 다양한 방법을 사용하는 여러 XML 끌어 오기 구문 분석기가 있으며 "JSON 끌어 오기 구문 분석기"및 유사한 일부 유망한 결과 (대부분 Java 및 Cb)에 대한 일부 Google 검색 결과 하지만 ased 언어. –
http://oboejs.com/ JSON을 스트리밍 방식으로 파싱합니다. – 0xcaff