당으로 모질라에서 JSON 워드 프로세서 , JSON.Stringify
두 번째 매개 변수가 censor
나무를 구문 분석하는 동안 아이들이 항목을 무시 / 필터로 사용할 수 있습니다. 그러나 아마도 순환 참조를 피할 수 있습니다.
Node.js에서는 할 수 없습니다. 따라서 다음과 같이 할 수 있습니다.
function censor(censor) {
var i = 0;
return function(key, value) {
if(i !== 0 && typeof(censor) === 'object' && typeof(value) == 'object' && censor == value)
return '[Circular]';
if(i >= 29) // seems to be a harded maximum of 30 serialized objects?
return '[Unknown]';
++i; // so we know we aren't using the original object anymore
return value;
}
}
var b = {foo: {bar: null}};
b.foo.bar = b;
console.log("Censoring: ", b);
console.log("Result: ", JSON.stringify(b, censor(b)));
결과:
Censoring: { foo: { bar: [Circular] } }
Result: {"foo":{"bar":"[Circular]"}}
불행히도 자동으로 원형이라고 가정하기 전에 최대 30 회의 반복이있는 것 같습니다. 그렇지 않으면 이것이 작동합니다. 나는 areEquivalent
여기 에서도 사용 했지만 JSON.Stringify
30 회 반복 후에도 여전히 예외를 던졌습니다. 그래도 필요한 경우 최상위 수준에서 개체를 적절하게 표현할 수 있으면 충분합니다. 아마도 누군가 이것을 개선 할 수 있습니까? HTTP 요청 객체의 Node.js에서 다음을 얻습니다.
{
"limit": null,
"size": 0,
"chunks": [],
"writable": true,
"readable": false,
"_events": {
"pipe": [null, null],
"error": [null]
},
"before": [null],
"after": [],
"response": {
"output": [],
"outputEncodings": [],
"writable": true,
"_last": false,
"chunkedEncoding": false,
"shouldKeepAlive": true,
"useChunkedEncodingByDefault": true,
"_hasBody": true,
"_trailer": "",
"finished": false,
"socket": {
"_handle": {
"writeQueueSize": 0,
"socket": "[Unknown]",
"onread": "[Unknown]"
},
"_pendingWriteReqs": "[Unknown]",
"_flags": "[Unknown]",
"_connectQueueSize": "[Unknown]",
"destroyed": "[Unknown]",
"bytesRead": "[Unknown]",
"bytesWritten": "[Unknown]",
"allowHalfOpen": "[Unknown]",
"writable": "[Unknown]",
"readable": "[Unknown]",
"server": "[Unknown]",
"ondrain": "[Unknown]",
"_idleTimeout": "[Unknown]",
"_idleNext": "[Unknown]",
"_idlePrev": "[Unknown]",
"_idleStart": "[Unknown]",
"_events": "[Unknown]",
"ondata": "[Unknown]",
"onend": "[Unknown]",
"_httpMessage": "[Unknown]"
},
"connection": "[Unknown]",
"_events": "[Unknown]",
"_headers": "[Unknown]",
"_headerNames": "[Unknown]",
"_pipeCount": "[Unknown]"
},
"headers": "[Unknown]",
"target": "[Unknown]",
"_pipeCount": "[Unknown]",
"method": "[Unknown]",
"url": "[Unknown]",
"query": "[Unknown]",
"ended": "[Unknown]"
}
나는 이것을하기 위해 작은 Node.js 모듈을 만들었습니다 : https://github.com/ericmuyser/stringy 자유롭게 개선 / 기여하십시오!
pagedoc
?