2017-03-02 3 views
1

Im folgenden Code, ich versuche, json zu bekommen. Aber das zurückgegebene Ergebnis enthält einen „Raum“ nach Klammer geöffnet und vor dem Schließen:konvertieren Zeichenfolge in Json schlägt in ionic2

{ 
    "address": ......, 
    "filename": image.png, 
    "price": 12 
} 

Im folgenden Code, wenn ich res.json() verwende es gibt Fehler für json parser. Stattdessen, wenn ich res.text() verwende, gibt String vollständig zurück. Dann habe ich versucht, „“ Raum zu entfernen, indem Sie ersetzen

this.http.get(Url) 
.map(res => res.text()) 
.subscribe(data => {   
    JSON.stringify(data);   
    console.log(data.price); 
}); 

Das Protokoll zeigt undefined statt 12.

Update zeigt, wenn i res.json() der Brache Fehler verwenden angezeigt. enter image description here

+0

'JSON.stringify' die' object' zu 'string' umwandelt. Sie versuchen, das "Preis" -Feld von "Daten" so auszuwählen, als wäre es ein "Objekt". Ich glaube, Sie wollten 'JSON.parse' verwenden. – echonax

+1

Auch wenn Sie JSON.parse() korrekt verwendet haben, ist das, was Sie gepostet haben, kein gültiger JSON. Nicht wegen Leerzeichen, sondern wegen fehlender Anführungszeichen. (und '......', offensichtlich). Fiw das Backend. Lass es gültige JSON generieren. –

+0

@echonax 'json.parse (Daten)' zeigt auch 'Unexpected Token in JSON an Position 23'. – RSA

Antwort

1

Ihre JSON ist ein Objekt data, die ein Array von Objekt enthält:

{ "data": [{ "address":" استان البرز، کرج، کرج نو، کوچه 102، ایران ", "filename":"image3.png", "distance": 2878 , "price": 101001 }]} 

Also, wenn Sie versuchen, und Konsolenprotokoll data.price es nicht so etwas ist. Wenn Sie tatsächlich den Preis des Artikels console.log möchten, die in dem Array würden Sie folgendes tun:

this.http.get(Url) 
.map(res => res.json().data) // let's extract the array from the JSON 
.subscribe(data => {   
    console.log(data[0].price) // console log the price of the first (and only item) in your array 
}); 
0

in diesem Fall habe ich diese Reihe von Code gemacht, natürlich ist es nicht so Schönheit und Aussehen hässlich.

this.http.get(Url) 
    .map(res => res.text()) 
     .subscribe(data => {    
      console.log(data); 
      this.data=data; 
      //if these two lines removed everything fails again. 
      this.data=this.data.replace(/\n/g,""); 
      this.data=this.data.replace(/\t/g,""); 
      console.log(this.data); 

      //this.data=JSON.stringify(this.data); 
      console.log(this.data); 

      this.data=JSON.parse(this.data); 
      console.log(this.data.data[0].price); 
    }); 
    } 

jede gute und Schönheit Idee ist willkommen

Verwandte Themen