2017-02-23 2 views
0

Dies ist meine JSON: (Dies ist AJAX Antwortdaten)jQuery JSON Parse - Objektelemente

{"id":"1","code":"43","doc":"{\"date\":\"2016\",\"name\":\"NAME1\",\"id\":\"7\"}"} 

Ich möchte diese JSON mit jQuery analysieren:

var obj = jQuery.parseJSON(data); 

Dies ist doc: console.log(obj.doc);

{\"date\":\"2016\",\"name\":\"NAME1\",\"id\":\"7\"} 

Aber wie beziehe ich mich auf den "Namen"? Ich verweise nicht auf obj.doc.name, weil der "Name" kein Element für das Objekt ist.

+1

Sie können deutlich sehen, dass der Wert von 'obj.doc' eine Zeichenfolge ist, die JSON enthält. Sie müssten 'JSON.parse (obj.doc)' erneut anwenden. Besser wäre es jedoch, den Code zu reparieren, der den JSON generiert, um Ihre Daten nicht doppelt zu kodieren. –

+0

Es scheint, als wäre 'doc' selbst JSON, also müssen Sie es analysieren. Etwas wie 'var obj = jQuery.parseJSON (Daten); obj.doc = jQuery.parseJSON (obj.doc); ' –

+1

THX! Das funktioniert! – user3740961

Antwort

2

Da der Wert des Attributs "doc" in Ihrem Objekt eine Zeichenfolge ist, müssen Sie diesen Wert analysieren, um ihn als JSON-Objekt zu behandeln.

Nach dem ersten Parse könnten Sie tun:

var doc = JSON.parse(obj.doc) 

Dann können Sie doc.name zugreifen.

1

In diesem Fall ist die Antwort bereits JSON. Sie möchten nur data.doc analysieren.

Sie können dies wie folgt aus:

data.doc = jQuery.parseJSON(data.doc) 

und jetzt, wenn Sie bekommen, was Sie wollten.

> console.log(data.doc.name) 
NAME1