手工构建的 JSON 与 JSON.stringify

Nat*_*ehr 1 javascript json stringify

背景

我有一堆对象需要将它们的状态以 json 表示形式发送到服务器。目前它的工作原理如下:

MyClass.prototype.GetJSON(){
    return '{"title":"' + m_Title + '","description":"' + m_Desc + '"}'; 

};
Run Code Online (Sandbox Code Playgroud)

问题

和我一起工作的人建议我做这样的事情:

MyClass.prototype.GetJSON(){
    return JSON.stringify( {title:m_Title, description:m_Desc} ); 

};
Run Code Online (Sandbox Code Playgroud)

这样做有什么优点/缺点?它比我已经在做的事情效率更高/更低吗?

Mar*_*c B 5

如果 m_Title 中有 JS 元字符怎么办?

m_Title = 'John "Beast" Johnson';
Run Code Online (Sandbox Code Playgroud)

生产

{"title":"John "Beast" Johnson", ...}
                ^^^^^--oops
Run Code Online (Sandbox Code Playgroud)

不错的语法错误。对于您的代码刚刚造成的发电厂崩溃感到抱歉。

当您的宿主语言有能力为您构建 JSON 时,切勿手动构建 JSON。

这与 SQL 注入问题完全相同 - 没有考虑插入文本的使用环境,并且盲目地假设不会出现任何问题。