Javascript 手工构建的JSON与JSON.stringify 出身背景
我有一堆对象,它们的状态需要以json表示形式发送到服务器。它目前的工作原理如下: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
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对象。