2016-04-11 11 views
0

ich Informationen aus einer JSON-Datei abrufen möchten in angular2.For diesem Zweck ich dieses benutzerdefinierte Rohr erstellt, nach dem Beispiel How to display json object using *ngForAbrufen und Anzeigen von Json-Objekt * ngFor

import {Pipe, PipeTransform} from 'angular2/core'; 

@Pipe({name: 'parseData'}) 


export class ParseDataPipe implements PipeTransform{ 
    constructor(){} 

    transform(value, args:string[]) : any { 

     let keys = []; 

     for (let key in value) { 
      keys.push({ 
       key: key, 
       value: value[key] 
      }); 
     } 
     return keys; 

    } 

} 

Dies ist die Vorlage i verwendet in der Komponente:

 <button (click)="onTestGet()">GET REQUEST</button><br> 
      <p>{{getData}}</p> 

     <button (click)="onTestPost()">POST REQUEST</button><br> 
      <p>{{postData}}</p> 

     <span *ngFor="#entry of postData | parseData"> 
      <ul> 
        <!--<li>Key: {{entry.key}}, value: {{entry.value.status}}</li>;--> 
        <li>Value: {{entry.value}}</li> 
      </ul> 
     </span> 
    </div> 

das ist meine jSON-Datei:

{"status":"success","type":"cellSetData","data": {"epoch":6874,"cube":"EquityDer","axes":[{"id":-1,"hierarchies": [{"dimension":"Measures","hierarchy":"Measures"}],"positions": [[{"namePath":["pnl.SUM"],"captionPath":["pnl.SUM"],"properties": {"DISPLAY_INFO":0}}]]}],"cells":[{"ordinal":0,"value":-42973.21272120108,"formattedValue":"-42,973.21","properties":{}}],"defaultMembers":[{"dimension":"Measures","hierarchy":"Measures","path":["contributors.COUNT"],"captionPath":["Count"]},{"dimension":"Time","hierarchy":"HistoricalDates","path":["Mon Apr 11 02:00:00 CEST 2016"],"captionPath":["2016-04-11"]},{"dimension":"Epoch","hierarchy":"Epoch","path":["master"],"captionPath":["master"]}]}} 

Ich möchte zum Beispiel "Status" und "Typ" abzurufen, aber ich abrufen eine Reihe von Zeichen wie folgt aus:

Wert: { Wert: " Wert: s Wert: t Wert: ein Wert: t Wert: u Wert: s Wert: " Wert:: Wert:" Wert: s Wert: u Wert: c Wert: c Wert: e Wert : S Wert: s Wert: " Wert:, Wert:" ...

ich das Objekt i wie das Abrufen analysieren:

postJSON(){ 
      var param=JSON.stringify(
      {"mdx":"SELECT FROM [EquityDerivativesCube] WHERE ([Measures].[pnl.SUM])"} 
     ); 

      var firstheaders = new Headers(); 

      firstheaders.append('Content-Type', 'application/json'); 
      firstheaders.append('Authorization', 'Basic YWRtaW46YWRtaW4='); 

     return this._http 
      .post('http://localhost:9090/webservices/pivot/rest/v1/cube/query/mdx', param,{headers: firstheaders}) 
      .map(res => res.json()); 

    } 

Weiß jemand, warum ich ein Array abrufen von Charakter und nicht ein Array von String wie ich wollte? Ich möchte angeben, dass ich diese Beispiele: access key and value of object using *ngFor Deep nested json to array in array/json rendering of Angular 2 *ngFor

Ich denke, dass es kein Problem json Parsen, sondern abrufen es ... mir geholfen

dank

Antwort

2

I anzuzeigen weiß nicht, wie man die Daten bekommt, aber es scheint, dass Sie vergessen, sie zu analysieren (dh, es in ein JSON-Objekt zu konvertieren), da Sie über eine Zeichenfolge und nicht über ein Objekt iterieren.

In der Schleife ist das erste Element { das erste Zeichen des Inhalts ist, ist der zweite ", und so weiter ...

Ihre JSON-Datei zu laden, sollten Sie so etwas verwenden:

this.http.get('/myfile.json').map(res => res.json()); 
+0

danke Thierry, aber über Ihre vorherige Frage, die ich sah, haben Sie Daten korrekt von Ihrem Json abgerufen? es ist die gleiche Sache, die ich gerne tun würde – steky

+0

Könnten Sie den Inhalt Ihrer Antwort bereitstellen? Speziell der Header "Content-Type". Vielen Dank! –

+0

werfen Sie einen Blick auf den Inhaltstyp meiner Antwort hier und unten: firstheaders.append ('Content-Type', 'application/json'); firstheaders.append ('Autorisierung', 'Basic YWRtaW46YWRtaW4 ='); – steky

Verwandte Themen