var json = {
name: "任务名称" ,
scoreRule: "",
score: "", // 如果规则表达式不为空,则默认选中 “按规则表达式计算”
unique: 1,
startTime: "2014-09-15 20:20:20",
endTime: "2014-10-15 20:20:20",
status: 1,
isTaks: 0,
tradeType: 1,
description: "业务描述" ,
codes: [ "16", "6" ], // 选中的平台
ids: [ "3"], // app内部链接
test: {
a: 1,
b: [1, 2, 3]
}
}; var json2 = {
a: 1,
b: 2,
c: {
a: 1,
b: {
a: 1,
b: [1, 2]
},
c: [1, 2]
},
d: [1, 2, {
a: 1,
b: {
a: 1
},
c: [1, 2]
}]
}; /**
* 把json格式对象转成可提交字符串格式,会过滤掉函数 {a: {b: 3}, b: [1], c: "d"} -> a.b=3&b[0]=1&c=d
* @param {Object} data 要转化的json对象
* @param {String} prefix 要带的前缀
* @return {String} 字符串
*/
function paramData(data, prefix) {
var _getType = ({}).toString,
_paramArray = function(arr, prefix) {
var result = [],
j = 0,
len = arr.length; for (; j < len; j++) {
var data = arr[j],
type = _getType.call(data),
subPrefix = prefix + "[" + j + "]"; result = result.concat(_paramAll(arr[j], prefix + "[" + j + "]"));
} return result;
},
_paramAll = function(data, prefix) {
var result = [],
type = _getType.call(data); switch (type) {
case "[object Object]" :
var subPrefix = prefix ? prefix + "." : "",
i; for (i in data) result = result.concat(_paramAll(data[i], subPrefix + i));
break;
case "[object Array]" :
result = result.concat(_paramArray(data, prefix));
break;
case "[object String]" :
case "[object Number]" :
result.push(prefix + "=" + data);
} return result;
}; prefix = prefix || "";
// if (prefix) { // prefix必须以 . 结尾
// prefix = /\.$/.test(prefix) ? prefix : (prefix + ".");
// } else {
// prefix = "";
// } return (function () {
return _paramAll(data, prefix);
}()).join( "&");
} console.log(paramData(json2, "rule"));
console.log(paramData(json, "rule"));

最新文章

  1. Linux 时间时区同步
  2. JAVA使用SAX解析XML文件
  3. 搬-Android - Wi-Fi Tutorial[转]
  4. C#:实现快捷键自定义设置
  5. office2010安装报错
  6. java多线程之:Java中的ReentrantLock和synchronized两种锁定机制的对比 (转载)
  7. javascript触摸事件touch使用
  8. const 常量数据,只读
  9. iPad横竖屏代码适配
  10. 基于Redis的CAS服务端集群
  11. 一不小心写了个bootstrap风格下拉控件 JqueryUI + bootstrap
  12. sqlite 中文排序
  13. maven如何修改本地仓库与中央仓库
  14. dojo之FilteringSelect
  15. C++11 带来的新特性 (3)—— 关键字noexcept
  16. Python学习笔记整理(python 3)
  17. Java中BigDecimal的舍入模式
  18. 修改 sql 提示符信息:
  19. ASP.NET WebAPI数据传输安全HTTPS实战项目演练
  20. Struts2 Intercepter 笔记

热门文章

  1. selenium打开带有扩展的chrome
  2. aspx与ascx,ashx的用法详细的总结介绍
  3. bzoj 2229 [Zjoi2011]最小割(分治+最小割)
  4. Tkinter教程之Text篇(3)
  5. 开源框架DNN使用01
  6. 我是怎么发现并解决项目页面渲染效率问题的(IE调试工具探查器的使用)
  7. 使用Async同步执行异步函数
  8. 微服务架构下分布式Session管理
  9. 第二百四十七天 how can I 坚持
  10. 【转】Nginx系列(四)--工作原理