如果 json 有效负载包含重复键,我需要抛出 400 错误请求错误。我正在使用下面的代码来获取数组中的所有属性。
var arrayObj = [];
var attrArr = [];
var arr = {
"serviceNumer": "1612045709",
"customerRefNumber": "TCreateS9",
"customerRefNumber": "TCreateS9"
};
for (var key in arr) {
arrayObj.push(key, arr[key]);
}
console.log("arrayObj", arrayObj);
for (var i = 0; i < arrayObj.length; i = i + 2) {
attrArr.push(arrayObj[i]);
}
console.log(attrArr);
当我迭代使用 for..在中,重复的键将被覆盖。因此,请帮助我使用任何替代方法。
JavaScript 对象不能有重复的键。所有密钥都必须是唯一的。 通过以下链接,这将消除您的疑虑 堆栈溢出 JSObj 和 查找和解决重复键的问题
您的 JSON 漏洞无法处理重复的键,
如果从 JSON 中获取对象并将其转换回 JSON,然后将字符串中的冒号数与原始冒号数进行比较。 如果原始键中有重复键,则新 JSON 中的冒号将减少。
这样的检查适合向菜鸟发出警告信息,但它不是防弹的。攻击者可能对字符串值中的冒号使用转义,从而导致计数增加。如果要求很关键,则需要修改 JSON 解析器来执行检查。
JSON 对象不能有重复的键。如果要以字符串形式获取有效负载,则可以执行以下操作:
var input = '{"serviceNumer":"1612045709","customerRefNumber":"TCreateS9","customerRefNumber":"TCreateS9"}';
if(input === JSON.stringify(JSON.parse(input)))
console.log("input has No Duplicate");
else
console.log("input has Duplicate");
这里 JSON.parse 会将输入转换为 JSON 对象并删除重复的键
希望这对您有所帮助:(
你只是不知道,继续做下去
//you can hard code it or write it
var arr = {
"serviceNumer": "1612045709",
"customerRefNumber": "TCreateS9",
"customerRefNumber": "TCreateS93333"
};
//but when you call it it just will show the last element
console.log(arr.customerRefNumber)
/*
its like you say
var ac = 1
var ac = 3
console.log(ac)
it will show 3
*/
//make it different
var arr2 = {
"serviceNumer": "1612045709",
"customerRefNumber": "TCreateS9",
"customerRefNumber2": "TCreateS9"
};
var a = Object.getOwnPropertyNames(arr).sort()
var b = Object.getOwnPropertyNames(arr2).sort()
console.log(a)
console.log(b)