JS中如果将对象格式化为String

发布于 2021-11-26 20:11:02 字数 82 浏览 849 评论 10

例如 {KEY:"VALUE"} 格式化为KEY=VALUE&N...

当然要支持无限嵌套对象以及VALUE可能为数组

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(10

混吃等死 2021-11-27 20:29:13
function http_build_query(formdata, numeric_prefix, arg_separator) {
  //  discuss at: http://phpjs.org/functions/http_build_query/
  // original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
  // improved by: Legaev Andrey
  // improved by: Michael White (http://getsprink.com)
  // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
  // improved by: Brett Zamir (http://brett-zamir.me)
  //  revised by: stag019
  //    input by: Dreamer
  // bugfixed by: Brett Zamir (http://brett-zamir.me)
  // bugfixed by: MIO_KODUKI (http://mio-koduki.blogspot.com/)
  //        note: If the value is null, key and value are skipped in the http_build_query of PHP while in phpjs they are not.
  //  depends on: urlencode
  //   example 1: http_build_query({foo: 'bar', php: 'hypertext processor', baz: 'boom', cow: 'milk'}, '', '&');
  //   returns 1: 'foo=bar&php=hypertext+processor&baz=boom&cow=milk'
  //   example 2: http_build_query({'php': 'hypertext processor', 0: 'foo', 1: 'bar', 2: 'baz', 3: 'boom', 'cow': 'milk'}, 'myvar_');
  //   returns 2: 'myvar_0=foo&myvar_1=bar&myvar_2=baz&myvar_3=boom&php=hypertext+processor&cow=milk'

  var value, key, tmp = [],
    that = this;

  var _http_build_query_helper = function(key, val, arg_separator) {
    var k, tmp = [];
    if (val === true) {
      val = '1';
    } else if (val === false) {
      val = '0';
    }
    if (val != null) {
      if (typeof val === 'object') {
        for (k in val) {
          if (val[k] != null) {
            tmp.push(_http_build_query_helper(key + '[' + k + ']', val[k], arg_separator));
          }
        }
        return tmp.join(arg_separator);
      } else if (typeof val !== 'function') {
        return that.urlencode(key) + '=' + that.urlencode(val);
      } else {
        throw new Error('There was an error processing for http_build_query().');
      }
    } else {
      return '';
    }
  };

  if (!arg_separator) {
    arg_separator = '&';
  }
  for (key in formdata) {
    value = formdata[key];
    if (numeric_prefix && !isNaN(key)) {
      key = String(numeric_prefix) + key;
    }
    var query = _http_build_query_helper(key, value, arg_separator);
    if (query !== '') {
      tmp.push(query);
    }
  }

  return tmp.join(arg_separator);
}

晚风撩人 2021-11-27 20:02:52

好的

拥有 2021-11-27 20:00:16

没有。。。你这种特定需求的,要自己去写。

苍暮颜 2021-11-27 19:58:27

刚刚试过了,嵌套的情况下与预期的不一致,谢谢

瀞厅☆埖开 2021-11-27 19:52:21

$.param(...),是不是无限嵌套没试过

滥情空心 2021-11-27 19:50:33

抱歉我不是很明白你的意思. 我是想问是否有现成的API javascript原生库中或者jquery

墨洒年华 2021-11-27 18:47:36

js为什么叫“JavaScript”(java怎么转,js就怎么转)!

柳絮泡泡 2021-11-27 16:08:36

Hi, 这个只是把对象转换为json字符串而不是理想中的key=value

一笔一画续写前缘 2021-11-27 14:53:43
JSON.stringify()?

狠疯拽 2021-11-27 07:03:47

没有别的方法,递归吧

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文