Javascript 如何将包含对象数组的json对象转换为url编码格式
我正在尝试将json对象转换为url编码格式,但我的json包含数组对象,因此jQuery.param函数不起作用。请告诉我如何做到这一点。 这是json: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":
{"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']