å¨JSONä¸åºç°å¾ªç¯å¼ç¨æ¶ï¼JavaScript ä¼æåº "cyclic object value" çå¼å¸¸ãJSON.stringify()
å¹¶ä¸ä¼å°è¯è§£å³è¿ä¸ªé®é¢ï¼å æ¤å¯¼è´è¿è¡å¤±è´¥ã
TypeError: cyclic object value (Firefox)
TypeError: Converting circular structure to JSON (Chrome and Opera)
TypeError: Circular reference in value argument not supported (Edge)
é误类å åªéåºéäºï¼
JSON æ ¼å¼æ¬èº«ä¸æ¯æå¾ªç¯å¼ç¨å¯¹è±¡ï¼å°½ç®¡åå¨IETF èæ¡)ï¼å æ¤ JSON.stringify()
å¹¶ä¸ä¼å°è¯è§£å³è¿ä¸ªé®é¢èæ¯ç´æ¥è¿è¡å¤±è´¥ã
å¨å¦ä¸å¾ªç¯ç»æä¸ï¼
var circularReference = { otherData: 123 };
circularReference.myself = circularReference;
JSON.stringify()
å°ä¼æ¥é
JSON.stringify(circularReference);
// TypeError: cyclic object value
è¦å¤ç循ç¯å¼ç¨ç JSONï¼å¯ä»¥ä½¿ç¨æ¯æè¿ç§ç»æçåº (ä¾å¦cycle.js))ï¼æè èªå·±å®ç°ï¼éè¦éè¿å¯åºåå弿¥æ¾ãæ¿æ¢æè ç§»é¤å¾ªç¯å¼ç¨ã
ä¸é¢ç代ç çæ®µæ¼ç¤ºäºå¦ä½ä½¿ç¨JSON.stringify()
ç replacer
åæ°æ¥æ¾åè¿æ»¤ï¼ä¼å¯¼è´æ°æ®ä¸¢å¤±ï¼å¾ªç¯å¼ç¨ã
const getCircularReplacer = () => {
const seen = new WeakSet();
return (key, value) => {
if (typeof value === "object" && value !== null) {
if (seen.has(value)) {
return;
}
seen.add(value);
}
return value;
};
};
JSON.stringify(circularReference, getCircularReplacer());
// {"otherData":123}
åè§
JSON.stringify
JSON.decycle
å JSON.retrocycle
ï¼è¿ä¸¤ä¸ªæ¹æ³è½å¤å¯¹å¾ªç¯å¯¹è±¡å¼ç¨ç»æè¿è¡ç¼ç åè§£ç ï¼å¹¶ä¸ä½¿ä¹æä¸ºä¸ç§æ©å±çä¸åä¸å
¼å®¹ç JSON æ ¼å¼ãRetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4