Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将包含对象数组的json对象转换为url编码格式_Javascript_Jquery_Json_Typescript_Urlencode - Fatal编程技术网

Javascript 如何将包含对象数组的json对象转换为url编码格式

Javascript 如何将包含对象数组的json对象转换为url编码格式,javascript,jquery,json,typescript,urlencode,Javascript,Jquery,Json,Typescript,Urlencode,我正在尝试将json对象转换为url编码格式,但我的json包含数组对象,因此jQuery.param函数不起作用。请告诉我如何做到这一点。 这是json: {"details": [ {"product_name":"knee cap","price":"123","quantity":"2","size":"small","color":"blue"}, {"product_id":2,"product_name":"soft pillow","price":

我正在尝试将json对象转换为url编码格式,但我的json包含数组对象,因此jQuery.param函数不起作用。请告诉我如何做到这一点。 这是json:

{"details":
 [
   {"product_name":"knee 
   cap","price":"123","quantity":"2","size":"small","color":"blue"}, 
   {"product_id":2,"product_name":"soft 
   pillow","price":"123","quantity":"2","size":"small","color":"blue"}
 ]
}

我建议将JSON数据作为POST请求传递,但如果您希望传入URL,请使用以下方法:

 var result = encodeURIComponent(JSON.stringify(object_to_be_serialised))
常量参数={ 详情:[{ 产品名称:膝盖骨, 价格:123, 数量:2, 尺寸:小, 颜色:蓝色 }, { 产品编号:2, 产品名称:软枕, 价格:123, 数量:2, 尺寸:小, 颜色:蓝色 }] } document.write encodeURIComponentJSON.stringifyparams 试试这个:

var l = {
  details: [
    {
      product_name: "kneecap",
      price: "123",
      quantity: "2",
      size: "small",
      color: "blue"
    },
    {
      product_id: 2,
      product_name: "soft pillow",
      price: "123",
      quantity: "2",
      size: "small",
      color: "blue"
    }
  ]
};

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

console.log(encode(l));

我假设您正在寻找一个JavaScript解决方案,它在浏览器中运行

您可以通过JSON.stringify将任何JavaScript对象转换为字符串 您可以使用encodeURIComponent函数对任何字符串进行url编码 例如:

const json = {details: [{name: "foo"}, {name: "bar"}]};
const s = encodeURIComponent(JSON.stringify(json));
console.log(s);
这将为您提供:

%7B%22details%22%3A%5B%7B%22name%22%3A%22foo%22%7D%2C%7B%22name%22%3A%22bar%22%7D%5D%7D

期望的结果是什么?我建议将JSON数据作为不接受JSON格式的POSTServer传递到正文中。这就是我试图转换为url编码字符串的原因。请在代码中添加一些有意义的解释,以便原始海报能够更好地理解您的答案是如何解决她/他的问题的。前缀属性是什么意思?@nff well prefix表示需要将父对象添加到对象中。例如:您将“test”作为前缀添加到您的对象,您可以在后端访问它,如下所示:test[details][0]['product\u name']否则:details[0]['product\u name']