Wie greife ich auf den Namen / Wert des JSON-Objekts zu?


75
function (data) {
    //add values based on activity type
    //data = JSON.parse(data);
    //alert(abc.Phone1);

    alert(data.myName)

    alert(data.toString());
    if (activityType == "Phone") {
    }
    return;

},

Wie können Sie diese Callback - Funktion siehe $.ajaxunter JSONDaten von der Steuerung.

Zum Beispiel:

[{"name":"myName" ,"address": "myAddress" }]

In diesem Fall wird in meiner ersten Warnung, die mich undefiniert gibt, und in der zweiten / dritten Warnung Folgendes angezeigt:

[{"name":"myName" ,"address": "myAddress" }]

Wie kann ich über den Namen auf den Wert zugreifen, damit meine erste Warnung mit myNamedem Wert von ausgefüllt wird name?

Antworten:


111

Anstatt JSON zu analysieren, können Sie Folgendes tun:

$.ajax({
  ..
  dataType: 'json' // using json, jquery will make parse for  you
});

Gehen Sie wie folgt vor, um auf eine Eigenschaft Ihres JSON zuzugreifen:

data[0].name;

data[0].address;

Warum Sie brauchen, data[0]weil Daten ein Array sind, also benötigen Sie zum Abrufen des Inhalts data[0](erstes Element), das Ihnen ein Objekt gibt {"name":"myName" ,"address": "myAddress" }.

Der Zugriff auf die Eigenschaft einer Objektregel lautet:

Object.property

oder manchmal

Object["property"] // in some case

Also brauchst du

data[0].name und so weiter, um zu bekommen, was Sie wollen.


Wenn du nicht

Stellen dataType: jsonSie dann ein, dass Sie sie analysieren $.parseJSON()und Daten wie oben abrufen müssen.


maps.googleapis.com/maps/api/geocode/… aus dieser URL Wie soll der Feldwert "formatierte_Adresse" in einer Variablen abgerufen werden? Erfolg: Funktion (Daten) {Adresse = Daten ['formatierte_Adresse'];}
löst

Gibt es einen optimierten Weg, dies zu tun? Wenn ich eine JSON-Liste mit mehr als 20 Namen habe und deren Wert anzeigen muss, aber ich weiß nicht, ob einer von ihnen im JSON zurückgegeben wird, kann es nur einer oder drei oder zehn oder alle 20 sein sollte ich das gleiche für jeden von ihnen wiederholen, zum Beispiel:if data[0].name : console.log(data[0].name); if data[0].adress : console.log(data[0].adress); ..
Armance

könnte data[0].[0]funktionieren, um darauf zuzugreifen name? Betrachten Sie es wie ein Array.
Malcolm Salvador

29

Der JSON, den Sie empfangen, befindet sich in einer Zeichenfolge. Sie müssen es in ein JSON-Objekt konvertieren. Sie haben die wichtigste Codezeile kommentiert

data = JSON.parse(data);

Oder wenn Sie jQuery verwenden

data = $.parseJSON(data)

Selbst wenn ich die Zeile auskommentiere, erhalte ich undefiniert
RollerCosta

Das liegt daran, dass Ihr JSON ein Array ist. Versuchen Sie es mit data [0] .name anstelle von data.name. Und stellen Sie sicher, dass Sie auf die Eigenschaft zugreifen, nicht auf den Wert, dh auf data [0] .name (Eigenschaft), anstatt auf das, was Sie in Ihrer Frage tun. Data.myName (der Wert)
UP

15

Wenn Sie antworten, ist wie {'customer':{'first_name':'John','last_name':'Cena'}}

var d = JSON.parse(response);
alert(d.customer.first_name); // contains "John"

Vielen Dank,


Hallo, wenn ich "Kunde" extrahieren wollte, wie würde ich das tun, wenn der Kunde das ist, was ich eigentlich will. In meinem Fall möchte ich aboutme.jpg als Zeichenfolge b '{"_ id": "2", "_ rev": "5-760e627e77645e960c5cc40ea6cf03a2", "_ attachments": {"aboutme.jpg": {"content_type" extrahieren ":" image / jpeg "," revpos ": 3," Digest ":" md5-mG5uU4IRGuY / f9PbZ8AIbQ == "," length ": 98831," stub ": true}}} \ n '
Andrew Irwin

6

Du solltest tun

alert(data[0].name); //Take the property name of the first array

und nicht

 alert(data.myName)

jQuery sollte in der Lage sein, den Datentyp für Sie zu schnüffeln, auch wenn Sie ihn nicht so einstellen, dass JSON.parse nicht erforderlich ist.

hier fummeln

http://jsfiddle.net/H2yN6/


4

Versuchen Sie diesen Code ..

function (data) {


var json = jQuery.parseJSON(data);
alert( json.name );


}

Ich habe es schon einmal versucht und einen Fehler erhalten Microsoft JScript-Laufzeitfehler: Objekt unterstützt keine Eigenschaft oder Methode 'parseJSON'
RollerCosta

2

Ich denke, Sie sollten dataType: 'json' in der Ajax-Konfiguration erwähnen und auf diesen Wert zugreifen:

data[0].name

2

Vielleicht möchten Sie diesen Ansatz ausprobieren:

var  str ="{ "name" : "user"}";
var jsonData = JSON.parse(str);     
console.log(jsonData.name)
//Array Object
str ="[{ "name" : "user"},{ "name" : "user2"}]";
jsonData = JSON.parse(str);     
console.log(jsonData[0].name)

0

Hier ist ein freundlicher Ratschlag. Verwenden Sie Chrome Developer Tools oder Firebug for Firefox, um Ihre Ajax-Aufrufe und -Ergebnisse zu überprüfen.

Möglicherweise möchten Sie auch etwas Zeit in das Verständnis einer Hilfsbibliothek wie Underscore investieren , die jQuery ergänzt und Ihnen über 60 nützliche Funktionen zum Bearbeiten von Datenobjekten mit JavaScript bietet.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.