jquery - Hur man får JSON med duplicerade nycklar helt i javascript


Jag försöker få JSON från URL:en, men i svarobjektet tas dubblettnycklar bort. Finns det något sätt att hämta det helt utan att ta bort dubblettnycklarna? Här är min js-kod

$('document').ready(function(){
    var s = $.getJSON("new.json");
    console.log(s);
});

följande är min new.json

{
"s": "wae",
"s": "asd"
}

Men i konsolen får jag JSON-objektet som följer

responseJSON: Object
s: "asd"

Tack på förhand

Svar #1

Om du inte kan ändra serverns svar, för enkel JSON-data kan du begära JSON som text och analysera det som en sträng:

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 denna kod newData med din json är:

{"s": ["wae","asd"]}

Svar #2

Nycklar i ett JSON-objekt bör vara unika. Annars är det vanligtvis den sista nyckeln med värdet som presenteras när man begär den nyckeln. Att ha samma nycklar gör det också svårare att skilja mellan objektets attribut. Hela poängen med en nyckel är att göra den åtkomlig och tillgänglig.

För att komma runt detta kan du alltid:

  1. Ändra nycklarna i din JSON

  2. Ändra JSON för att innehålla en array

    {"s": ["wae","asd"]}

JavaScript Object Notation (JSON) Data Interchange Format) (RFC7159) säger:

Namnen inom ett objekt SKA vara unika.

I detta sammanhang måste should förstås som specificerat i RFC 2119

BORDE Detta ord, eller adjektivet "REKOMMENDERAD", betyder att det kan finnas giltiga skäl i vissa särskilda omständigheter att ignorera en viss punkt, men de fulla konsekvenserna måste förstås och noggrant övervägas innan man väljer en annan väg.