将多维对象转换为查询字符串

XTRUST.ORG

我有一个对象:

{"f":{"cid":"325","field_name[10][0]":"133","field_name[10][1]":"132","price":"320|3600"}}

我想将此对象转换为查询字符串。我正在使用此功能:

function toQueryString(obj, prefix) {
        var str = [];
        for(var p in obj) {
            var k = prefix ? prefix + "[" + p + "]" : p, v = obj[p];
            str.push(typeof v == "object" ?
              toQueryString(v, k) :
              encodeURIComponent(k) + "=" + encodeURIComponent(v));
        }
        return str.join("&");
}

但是这个函数给我结果:

f[cid]=325&f[field_name[10][0]]=133&f[field_name[10][1]]=132&f[price]=320%7C3600

这是错误的,因为我无法在服务器端获得正确的结果:

Array
(
    [f] => Array
        (
            [cid] => 325
            [field_name[10] => Array
                (
                    [0] => 133
                )

            [price] => 320|3600
        )
)

我怎么解决这个问题?我认为正确的结果将是这样的:

f[cid]=325&f[field_name[[10][0]]]=133&f[field_name[[10][1]]]=132&f[price]=320%7C3600
西蒙斯特

为了更正嵌套的查询字符串,我对您的函数做了一些更改:

function toQueryString(obj, prefix) {
    var str = [], k, v;
    for(var p in obj) {
        if (!obj.hasOwnProperty(p)) {continue;} // skip things from the prototype
        if (~p.indexOf('[')) {
            k = prefix ? prefix + "[" + p.substring(0, p.indexOf('[')) + "]" + p.substring(p.indexOf('[')) : p;
// only put whatever is before the bracket into new brackets; append the rest
        } else {
            k = prefix ? prefix + "[" + p + "]" : p;
        }
        v = obj[p];
        str.push(typeof v == "object" ?
          toQueryString(v, k) :
          encodeURIComponent(k) + "=" + encodeURIComponent(v));
    }
    return str.join("&");
}

现在,在原始对象上运行此函数将为我们提供以下查询字符串:

f[cid]=325&f[field_name][10][0]=133&f[field_name][10][1]=132&f[price]=320|3600

如果将其传递给告诉的PHP页面print_r($_GET),它将为我们提供:

Array
(
    [f] => Array
        (
            [cid] => 325
            [field_name] => Array
                (
                    [10] => Array
                        (
                            [0] => 133
                            [1] => 132
                        )

                )

            [price] => 320|3600
        )

)

正是您想要的,对不对?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JS将字符串转换为多维对象键

来自分类Dev

JS将字符串转换为多维对象键

来自分类Dev

将查询字符串转换为对象

来自分类Dev

从查询到字符串的多维数组向数组提供了将字符串转换为字符串的通知

来自分类Dev

PHP 将多维数组转换为用于 curl POST 的查询字符串

来自分类Dev

将对象转换为多维字符串数组

来自分类Dev

将字符串转换为对象

来自分类Dev

将JSON(作为字符串)转换为多维数组

来自分类Dev

PHP将字符串转换为多维数组

来自分类Dev

PHP将目录的多维数组转换为字符串

来自分类Dev

将多维数组转换为特定的字符串格式

来自分类Dev

将结果集转换为多维字符串数组

来自分类Dev

将字符串数组转换为多维数组

来自分类Dev

将json字符串转换为多维数组

来自分类Dev

PHP:将多维数组转换为字符串

来自分类Dev

多维数组将内部数组转换为字符串

来自分类Dev

将字符串转换为多维数组

来自分类Dev

将多维数组转换为字符串

来自分类Dev

将字符串转换为多维数组

来自分类Dev

如何让javascript将多维数组转换为字符串?

来自分类Dev

将字符串转换为等效的多维数组

来自分类Dev

将字符串转换为多维数组索引 Javascript

来自分类Dev

Postgres 查询将字符串化的 json 对象转换为 jsonb 对象

来自分类Dev

将字符串转换为以特定字符串为键的数组或多维数组

来自分类Dev

我需要帮助,将Mysql查询对象转换为字符串

来自分类Dev

只能通过查询无法将mysqli_result类的对象转换为字符串

来自分类Dev

如何将查询字符串转换为多级对象

来自分类Dev

只能通过查询无法将mysqli_result类的对象转换为字符串

来自分类Dev

Python Flask:如何将查询对象转换为字符串?

Related 相关文章

热门标签

归档