jquery - Hvordan man får JSON med dublerede nøgler fuldstændigt i javascript
Jeg prøver at hente JSON fra URL'en, men i svarobjektet fjernes duplikerede nøgler. Er der en måde at hente det fuldstændigt uden at fjerne de duplikerede nøgler? Her er min JS-kode
$('document').ready(function(){
var s = $.getJSON("new.json");
console.log(s);
});
følgende er min new.json
{
"s": "wae",
"s": "asd"
}
Men i konsollen får jeg JSON-objektet som følger
responseJSON: Object
s: "asd"
Tak på forhånd
Svar #1
Hvis du ikke kan ændre serverens respons, kan du for simple JSON-data anmode om JSON som tekst og analysere det som en streng:
var check = new RegExp('["\']([^\'"]*)[\'"][^:]*:[^"\']*["\']([^\'"]*)[\'"]',"g");
$.ajax({
url : "text.json",
dataType : "text",
success : function(data){
var newData = {};
data.replace(check,function(a,b,c){
if(typeof newData[b] == "undefined"){
newData[b] = c;
}else if(typeof newData[b] == "object"){
newData[b].push(c);
}else{
var ca = newData[b];
newData[b] = [ca,c];
}
return a;
});
console.log(newData);
console.log($.parseJSON(data));
},
error : function(e,a){
console.log(e,a);
}
});
i denne kode newData med dit json er:
{"s": ["wae","asd"]}
Svar #2
Nøgler i et JSON-objekt skal være unikke. Ellers er det som regel den sidste nøgle med værdien, der bliver vist, når man anmoder om den nøgle. At have de samme nøgler gør det også sværere at skelne mellem attributterne i et objekt. Hele pointen med en nøgle er at gøre det tilgængeligt og tilgængeligt.
For at komme uden om dette kunne du altid:
Skift nøglerne i din JSON
Ændr JSON'en, så den indeholder et array
{"s": ["wae","asd"]}
JavaScript Object Notation (JSON) Dataudvekslingsformat) (RFC7159) siger:
Navnene inden for et objekt SKAL være unikke.
I denne sammenhæng skal should forstås som angivet i RFC 2119
BURDE Dette ord, eller adjektivet "ANBEFALET", betyder, at der kan eksistere gyldige grunde i særlige omstændigheder til at ignorere et bestemt punkt, men de fulde implikationer skal forstås og nøje vurderes, før man vælger en anden fremgangsmåde.
