この解答例はChatGPTによって生成されています,正しいかは自己判断で。 皆の投稿からも解答例が見つかるかもしれませんよ。
BFE.devでのAI解答例 - JavaScript コーディング問題
144. JSON data type以外のdata typeをserialize/deserializeする
function parse(string: string) { return JSON.parse( string, (key, value) => { if (typeof value === 'string' && /^([+\-]?\d+(?:\.\d+)?)([nbsf]|$)/.test(value)) { // BigInt, NaN, Infinity, -Infinity を判別し正しい型に変換する const [, numStr, type] = value.match(/^([+\-]?\d+(?:\.\d+)?)([nbsf]|$)/)!; switch (type) { case 'n': return BigInt(numStr + 'n'); case 'b': return NaN; case 's': return Infinity; case 'f': return -Infinity; default: return value; } } return value; } );}function stringify(data: any) { return JSON.stringify( data, (key, value) => { if (typeof value === 'bigint') { return value.toString() + 'n'; } if (value === Infinity) { return 'Infinity'; } if (value === -Infinity) { return '-Infinity'; } if (Number.isNaN(value)) { return 'NaN'; } return value; } );}
このコードでは、JSON.parse() と JSON.stringify() を使用します。JSON.stringify() は、BigInt、NaN、Infinity、-Infinityを対処するために変更されたカスタム関数を使用しています。JSON.parse() は、カスタム復号化関数を使用して、serializeされた値から正しい型に変換します。