Javascript 手工构建的JSON与JSON.stringify 出身背景

Javascript 手工构建的JSON与JSON.stringify 出身背景,javascript,json,stringify,Javascript,Json,Stringify,我有一堆对象,它们的状态需要以json表示形式发送到服务器。它目前的工作原理如下: MyClass.prototype.GetJSON(){ return '{"title":"' + m_Title + '","description":"' + m_Desc + '"}'; }; 问题 和我一起工作的那个人建议我做类似的事情: MyClass.prototype.GetJSON(){ return JSON.stringify( {title:m_Title, desc

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

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

};
问题 和我一起工作的那个人建议我做类似的事情:

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

};
这样做的利弊是什么?它是否比我正在做的工作效率更高/更低?

使用JSON.stringify

它是

更标准 易于阅读:无需检查代码的作用 一定要逃避需要逃避的事情 保留现有代码将给您带来惊喜,因为有一天字符串中会有引号,或者有一天您将尝试将当前应用程序逻辑扩展到其他类型

如果支持IE7对您很重要,您应该考虑到您需要一个库,请参阅。

使用JSON.stringify

它是

更标准 易于阅读:无需检查代码的作用 一定要逃避需要逃避的事情 保留现有代码将给您带来惊喜,因为有一天字符串中会有引号,或者有一天您将尝试将当前应用程序逻辑扩展到其他类型


如果支持IE7对您很重要,您应该考虑到您需要一个库,请参阅。

使用JSON库优于字符串混搭的优点:

代码更清晰:更容易阅读,更容易调试,更容易理解代码的用途 需要库中一个不太可能的错误才能生成无效的JSON 使用字符串mashing的优点:


与字符串混搭相比,使用JSON库没有任何优势:

代码更清晰:更容易阅读,更容易调试,更容易理解代码的用途 需要库中一个不太可能的错误才能生成无效的JSON 使用字符串mashing的优点:


没有。

它的效率会稍低一些,但会更加标准化。另外,使用stringify可以防止像注入这样的事情…

效率会稍低一些,但会更标准化。另外,使用stringify可以防止注入之类的事情…

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

m_Title = 'John "Beast" Johnson';
生产

{"title":"John "Beast" Johnson", ...}
                ^^^^^--oops
不错的语法错误。很抱歉刚才你的代码导致了动力装置的崩溃

当您的宿主语言可以为您构建JSON时,千万不要手动构建JSON


这与SQL注入问题完全相同——没有考虑到插入的文本正在使用的环境,并且盲目地假设任何事情都不可能出错。

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

m_Title = 'John "Beast" Johnson';
生产

{"title":"John "Beast" Johnson", ...}
                ^^^^^--oops
不错的语法错误。很抱歉刚才你的代码导致了动力装置的崩溃

当您的宿主语言可以为您构建JSON时,千万不要手动构建JSON


这与SQL注入问题完全相同——没有考虑到插入文本所处的环境,盲目地假设任何事情都不可能出错。

天哪,你为什么要手工做大多数javascript引擎免费提供给你的事情呢?天哪,为什么你要手工做大多数javascript引擎免费提供给你的事情?别忘了提到IE7本机不支持JSON对象。别忘了提到IE7本机不支持JSON对象。