JavaScript 中 JSON 对象与字符串互转的多种实现方案
本文介绍了 JavaScript 中 JSON 对象与字符串相互转换的多种实现方式。涵盖使用 eval 解析、自定义递归序列化函数、处理数字类型忽略以及原生 JSON.stringify 方法。同时分析了各方案在浏览器兼容性方面的差异及注意事项,帮助开发者根据实际需求选择合适方案。
JSON 对象与字符串互转概述
JavaScript 中 JSON 对象与字符串相互转换的简单实现
function obj2str(o){
var r = [];
if(typeof o == "string" || o == null) {
return o;
}
if(typeof o == "object"){
if(!o.sort){
r[0]="{"
for(var i in o){
r[r.length]=i;
r[r.length]=":";
r[r.length]=obj2str(o[i]);
r[r.length]=",";
}
r[r.length-1]="}"
}else{
r[0]="["
for(var i =0;i<o.length;i++){
r[r.length]=obj2str(o[i]);
r[r.length]=",";
}
r[r.length-1]="]"
}
return r.join("");
}
return o.toString();
}
字符串转换为对象
使用 eval 进行字符串转对象
function taoRan(){
var str='{"result": [["提现", "219"], ["提现银行", "121"], ["退款", "272"], ["提现失败", "16"], ["团购", "15"], ["淘宝", "412"],["台湾", "58"], ["提现限额", "16"], ["提现时间", "81"], ["台湾认证", "26"]]}';
alert(strToObj(str).result[2]);
}
function strToObj(json){
return eval("("+json+")");
}
一种非常实用的 JsonToString 方法
自定义 JsonToString 序列化方法
//'
Jsontostring代码
function JsonToString(o) {
var arr = [];
var fmt = function(s) {
if (typeof s == 'object' && s != null) return JsonToStr(s);
return /^(string|number)$/.test(typeof s) ? "'" + s + "'" : s;
}
for (var i in o)
arr.push("'" + i + "':" + fmt(o[i]));
return '{' + arr.join(',') + '}';
}
这种实现方式在实际使用中效果很好。
此外,如果希望避免将 JSON 中的数字类型也进行字符串化处理,可以对代码进行如下调整:将 return /^(string|number)$/.test(typeof s) ? '"' + s + '"' : s; 修改为 return /^(string)$/.test(typeof s) ? '"' + s + '"' : s;。这实际上只是忽略了对 number 类型的特殊处理。
处理数字类型与复杂对象的序列化
function O2String(O) {
//return JSON.stringify(jsonobj);
var S = [];
var J = "";
if (Object.prototype.toString.apply(O) === '[object Array]') {
for (var i = 0; i < O.length; i++)
S.push(O2String(O[i]));
J = '[' + S.join(',') + ']';
}
else if (Object.prototype.toString.apply(O) === '[object Date]') {
J = "new Date(" + O.getTime() + ")";
}
else if (Object.prototype.toString.apply(O) === '[object RegExp]' || Object.prototype.toString.apply(O) === '[object Function]') {
J = O.toString();
}
else if (Object.prototype.toString.apply(O) === '[object Object]') {
for (var i in O) {
O[i] = typeof (O[i]) == 'string' ? '"' + O[i] + '"' : (typeof (O[i]) === 'object' ? O2String(O[i]) : O[i]);
S.push('"' + i + '":' + O[i]);
}
J = '{' + S.join(',') + '}';
}
return J;
};
原生 JSON.stringify 方法及兼容性说明
JSON.stringify(jsonobj)
使用 JSON.stringify(jsonobj) 是最简便的方法,但存在浏览器兼容性问题。该方法仅适用于 IE8 及以上版本、Chrome 1 及以上版本以及 Firefox 3 及以上版本。
以上就是小编为大家带来的关于 JavaScript 中 JSON 对象与字符串相互转换的完整内容,希望对大家有所帮助。
JavaScript入门书籍避坑:这些书不适合初学者
2026-11-05 16:31:15
JS使用Math.round实现保留两位小数的原理与代码
2026-11-05 15:35:55
JavaScript 原生 Date 对象怎么实现日期加减
2026-11-05 14:30:00
JavaScript函数定义的三种方式:声明、表达式与箭头函数
2026-11-05 13:50:55
JavaScript中escape、encodeURI和encodeURIComponent对空格的处理差异
2026-11-05 12:47:23
