javascritp 传入对象或数组生成json字符串 解析json字符串
来源:互联网 发布:linux更新分区表 编辑:程序博客网 时间:2024/06/09 17:13
/** * 传入对象或数组生成json字符串 * json数据中的数组 定义 键名 从0开始 连续不间断,且为升序的 为数组[注:json中的关联数组统称为对象] * json数据中的对象 定义 * o object或 array * 返回json字符串 * 2015-02-06 */function jsonStr(o) { var arr = [], left = '', right = ''; var o_is_arr = 1; //标记o是否是一个数组 1是数组 其他不是数组[统称对象] var o_type = Object.prototype.toString.call(o); if (o_type != '[object Array]' && o_type != '[object Object]') {//o既不是数组又不是对象是直接反回o return o; } var i = 0; for (var k in o) { if (i != k) { o_is_arr = 2; } i++; } if (i < 1) {//o长度小于1时 return Object.prototype.toString.call(o) == '[object Array]' ? '[]' : '{}'; } if (o_is_arr == 1) {//是数组 left = '[', right = ']'; } else {//是对象 left = '{', right = '}'; } for (var k in o) { if (typeof o[k] == 'object') { if (o_is_arr == 1) {//是数组 arr.push(arguments.callee(o[k])); } else {//是对象 arr.push('"' + k + '":' + arguments.callee(o[k])); } } else { if (o_is_arr == 1) {//是数组 arr.push('"' + o[k] + '"'); } else {//是对象 arr.push('"' + k + '":"' + o[k] + '"'); } } } return left + arr.join(',') + right;}/** * 解析json字符串 * @param {type} data * @returns {Function|@exp;window@pro;JSON@call;parse} */function jsonParse(data) { if (window.JSON && window.JSON.parse) { return window.JSON.parse(data); } if (data === null) { return data; } return (new Function("return " + data))();}
/** * 传入对象或数组生成json字符串 * json数据中的数组 定义 键名 从0开始 连续不间断,且为升序的 为数组[注:json中的关联数组统称为对象] * json数据中的对象 定义 * o object或 array * 返回json字符串 * 2015-02-06 * 此方法相比于 jsonStr() 方法结省了cpu确多耗用了内存 */function jsonStr2(o) { var arr1 = [];//存数组 var arr2 = [];//存对象 var left = '', right = ''; var o_type = Object.prototype.toString.call(o); if (o_type != '[object Array]' && o_type != '[object Object]') {//o既不是数组又不是对象是直接反回o return o; } var i = 0; var is_array = 1; //标记o是否是一个数组 1是数组 其他不是数组[统称对象] left = '[', right = ']';//默认o以数组型式表标 for (var k in o) { if (i != k) {//检测o是否需要以对象型式表示 is_array = 2; left = '{', right = '}'; } if (typeof o[k] == 'object') { arr1.push(arguments.callee(o[k])); arr2.push('"' + k + '":' + arguments.callee(o[k])); } else { arr1.push('"' + o[k] + '"'); arr2.push('"' + k + '":"' + o[k] + '"'); } i++; } if (i < 1) {//o长度小于1时 return Object.prototype.toString.call(o) == '[object Array]' ? '[]' : '{}'; } else if (is_array == 1) { return left + arr1.join(',') + right; } else { return left + arr2.join(',') + right; }}
0 0
- javascritp 传入对象或数组生成json字符串 解析json字符串
- java后台JSON解析前台传入的数组JSON字符串
- Retrofit传入body返回对象或json字符串
- Java解析Json字符串--数组或列表
- JS 解析JSON字符串 得到对象数组
- Json字符串对象解析
- json json数组,json字符串解析
- JSon对象、JSon数组和JSon字符串。
- JSON字符串,JSON对象,JSON数组
- js解析json数组+java对象转json字符串
- JSON数据解析(JSON对象与json字符串json数组之间转换)
- Json字符串生成与解析
- JSON之生成JSON字符串和解析
- fastjson--Gson生成Json字符串,并且解析Json字符串生成对象
- JsonObject生成Json字符串,并且解析为对象-----JsonReader解析Json字符串
- JS解析json字符串数组
- Jquery解析json字符串、json数组
- iOS对象(字典或数组)转化为JSon字符串
- RadioButton
- win7局域网传输大文件蓝屏解决方法
- BZOJ 3831 POI 2014 Little Bird 单调队列DP
- 推荐!国外程序员整理的Java资源大全
- 增强for循环
- javascritp 传入对象或数组生成json字符串 解析json字符串
- 微商的微信营销互动方法
- 持续集成之Maven实战
- 基础算法系列(二)查找算法之二分查找
- Android ExpandableListView长按事件完美解决
- find_element_by_accessibility_id 在 android 中的详解
- 未能从程序集“System.ServiceModel, Version=3.0.0.0”中加载类型“System.ServiceModel.Activation.HttpModule” 的错误解决方法
- 华为机试—寻找丑数(由浅入深优化至20ms)
- java反射