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:

  1. Skift nøglerne i din JSON

  2. Æ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.