把json格式对象转成可提交字符串格式,会过滤掉函数 {a: {b: 3}, b: [1], c: "d"} -> a.b=3&b[0]=1&c=d

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"));
时间: 2024-10-29 02:38:10

把json格式对象转成可提交字符串格式,会过滤掉函数 {a: {b: 3}, b: [1], c: "d"} -> a.b=3&b[0]=1&c=d的相关文章

Newtonsoft.Json 把对象转换成json字符串

var resultJson = new { records = rowCount, page = pageindex, //总页数=(总页数+页大小-1)/页大小 total = (rowCount + pagesize - 1) / pagesize,//总页数 rows = data.ToList<Web.Entity.Db.Table1Bean>(), }; //JsonResult jr = Json(resultJson, "application/json",

将psd格式批量转换成jpg或png格式(C#自制软件)

此项目基于.net framework 4.0 将psd格式批量转换成jpg或png格式. 链接:https://pan.baidu.com/s/16IEjX0sHaY9H3Ah7mv6IPQ 提取码:c948 原文地址:https://www.cnblogs.com/alpha-w/p/10797935.html

Spring Mvc使用Jackson进行json转对象时,遇到的字符串转日期的异常处理(JSON parse error: Can not deserialize value of type java.util.Date from String)

1.问题排查 - 项目配置 springboot 2.1 maven配置jackson - 出现的场景: 服务端通过springmvc写了一个对外的接口,查询数据中的表,表中有一个字段属性是时间戳,返回一个json字符串,其中该json带有日期,格式为yyyy-MM-dd HH:mm:ss 客户端调用该http接口,指定返回值为一个Vo,Vo中日期的字段为Date类型 客户端调用该接口后抛异常了.报错信息如下: feign.codec.DecodeException: JSON parse er

将TIF格式批量转换成jpg或png格式(C#自制软件)

此项目基于.net framework 4.0 全选tif,拖进去,等待,完成. so easy... 链接:https://pan.baidu.com/s/1uCDhAT0uHRjdy4g557wKiw 提取码:ara8 原文地址:https://www.cnblogs.com/alpha-w/p/10797909.html

Map对象转换成Json格式的String字符串

1 //action处理页面发来的String,put到map转换成Json格式的String字符串 2 @RequestMapping("/seleteOaOrder") 3 @ResponseBody 4 public Object seleteOaOrder(String param){//param = "小明"; 5 System.out.println("+++++++++++++++++param:"+param); 6 if(pa

C#自定义将各种对象转换成JSON格式的类

这个C#封装类可以用于将各种格式的数据转换成JSON格式,包括List转换成Json,普通集合转换Json ,DataSet转换为Json ,Datatable转换为Json ,DataReader转换为Json等,如果你需要将对象转换成JSON,可以使用这个类. using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Reflection; using

(转)json格式脚本转成对象

在测试杰夫接口编写脚本的时候,一般研发提供的入参是json格式的数据,但是调用接口的方法的时候需要传入对象,杰夫的jar包中本身带有将json转换成对象的功能,这样就不用我们自己将json转换为对象了,直接用杰夫自带的就可以了,希望该功能可以节省一定的工作量. 具体例子: //需要传入的json格式的数据 String paramFreightRequestjson="{\"pin\":\"test\",\"applyDate\":14

自定义EL表达式,将对象转成json格式,关键代码

做javaweb开发的最常用的一个东西el表达式,这个东西是个很好用的东西,但有些时候我们处理复杂的字符串操作,就有些相形见绌了,这个时候就需要用自定义的方法去实现更多简洁方便的事情. 下面自定义一个将对象转成json字符串的自定义el表达式用来讲解这个自定义的过程: ElFunctions.java import net.sf.json.JSONObject; public class ElFunctions{ public static String toJsonString(Object

Gson把对象转成json格式的字符串

最近在做一个java web service项目,需要用到jason,本人对java不是特别精通,于是开始搜索一些java平台的json类库. 发现了google的gson,因为之前对于protocolbuf有一些了解,带着一些好奇心,我开始使用了gson. 经过比较,gson和其他现有java json类库最大的不同时gson需要序列化得实体类不需要使用annotation来标识需要序列化得字段,同时gson又可以通过使用annotation来灵活配置需要序列化的字段. 下面是一个简单的例子: