Vraag Parse JSON in JavaScript? [duplicaat]


Deze vraag heeft hier al een antwoord:

Ik wil een JSON-tekenreeks in JavaScript parseren. Het antwoord is zoiets als

var response = '{"result":true,"count":1}';

Hoe kan ik de waarden krijgen result en count van deze?


1509
2018-02-08 16:34


oorsprong


antwoorden:


De meeste browsers ondersteunen JSON.parse(), die is gedefinieerd in ECMA-262 5th Edition (de specificatie waarop JavaScript is gebaseerd). Het gebruik ervan is eenvoudig:

var json = '{"result":true,"count":1}',
    obj = JSON.parse(json);

alert(obj.count);

Voor browsers die dat niet doen, kunt u het gebruiken met json2.js.

Zoals opgemerkt in de opmerkingen, als u al gebruik maakt van jQuery, is er een $.parseJSON functie die wordt toegewezen aan JSON.parse indien beschikbaar of een vorm van eval in oudere browsers. Dit voert echter extra, onnodige controles uit die ook door worden uitgevoerd JSON.parse, dus voor de beste all round uitvoering zou ik aanraden het als volgt te gebruiken:

var json = '{"result":true,"count":1}',
    obj = JSON && JSON.parse(json) || $.parseJSON(json);

Dit zorgt ervoor dat u native gebruikt JSON.parse onmiddellijk, in plaats van dat jQuery sanitaire controles uitvoert op de string voordat deze wordt doorgegeven aan de native parsing-functie.


1863
2018-02-08 16:38



Allereerst moet u ervoor zorgen dat de JSON-code geldig is.

Daarna zou ik aanraden om een ​​JavaScript-bibliotheek zoals jQuery of Prototype te gebruiken, omdat deze dingen goed worden verwerkt in die bibliotheken.

Aan de andere kant, als u geen bibliotheek wilt gebruiken en u kunt instaan ​​voor de geldigheid van het JSON-object, zou ik de string eenvoudig in een anonieme functie plaatsen en de eval-functie gebruiken.

Dit wordt niet aanbevolen als u het JSON-object van een andere bron krijgt die niet absoluut vertrouwd is, omdat de eval-functie desgewenst de code voor afvalligen toestaat.

Hier is een voorbeeld van het gebruik van de eval-functie:

var strJSON = '{"result":true,"count":1}';
var objJSON = eval("(function(){return " + strJSON + ";})()");
alert(objJSON.result);
alert(objJSON.count);

Als u bepaalt welke browser wordt gebruikt of als u zich geen zorgen maakt over mensen met een oudere browser, kunt u altijd de JSON.parse-methode gebruiken.

Dit is echt de ideale oplossing voor de toekomst.


91
2018-02-08 16:46



Als u dit van een externe site krijgt, kan het handig zijn om getJSON van jQuery te gebruiken. Als het een lijst is, kunt u deze doorlopen met $ .each

$.getJSON(url, function (json) {
    alert(json.result);
    $.each(json.list, function (i, fb) {
        alert(fb.result);
    });
});

49
2017-07-18 21:57



Als je wilt gebruiken JSON 3 voor oudere browsers kunt u deze voorwaardelijk laden met:

<script>
    window.JSON || 
    document.write('<script src="//cdnjs.cloudflare.com/ajax/libs/json3/3.2.4/json3.min.js"><\/scr'+'ipt>');
</script>

Nu de standaard window.JSON object is voor u beschikbaar, ongeacht welke browser een client gebruikt.


32
2018-04-19 18:52



Het volgende voorbeeld zal het duidelijk maken:

var jsontext   = '{"name":"x","age":"11"}';
var getContact = JSON.parse(jsontext);
document.write(getContact.name + ", " + getContact.age);

// Output: x, 11

OF

U kunt ook de eval functie. Het volgende voorbeeld gebruikt de eval functie:

var jsontext   = '{"name":"x","age":"11"}';
var getContact = eval('(' + jsontext + ')');
document.write(getContact.name + ", " + getContact.age);

// Output: x, 11

Sinds de JSON.parse functie is veiliger en voert sneller uit dan de eval-functie, raad ik aan om te gebruiken JSON.parse functie.


31
2017-10-01 07:42



Als u een stringvariabele (een goedgevormde JSON-tekenreeks) doorgeeft aan JSON.parse van MVC @Viewbag die doublequote, '"' heeft, moet u deze als aanhalingstekens verwerken vóór JSON.parse (jsonstring)

    var jsonstring = '@ViewBag.jsonstring';
    jsonstring = jsonstring.replace(/&quot;/g, '"');  

25
2017-10-22 15:06



U kunt de eval-functie gebruiken zoals bij sommige andere antwoorden. (Vergeet de extra accolades niet.) Je zult weten waarom wanneer je dieper graaft), of gewoon de jQuery-functie gebruiken parseJSON:

var response = '{"result":true , "count":1}'; 
var parsedJSON = $.parseJSON(response);

OF

U kunt de onderstaande code gebruiken.

var response = '{"result":true , "count":1}';
var jsonObject = JSON.parse(response);

En u kunt de velden gebruiken met jsonObject.result en jsonObject.count.


24
2018-06-06 03:51