2017-01-12 7 views
-3

Ich habe eine json wie folgt aus:Lesen Sie eine JSON-Liste in die Liste

{ 
    "Project 
     [id=1, dateDebut=2017-01-13, dateFin=2017-01-18, description=qsd, sponsor=qsd ]" 
    : 
[ 
    {"id":1,"title":"qsd ","description":"qsdqsd","dateFin":"2017-01-26"}, 
    {"id":2,"title":"sss ","description":"sss","dateFin":"2017-01-26"} 
] 
} 

von ihren Ursprung: return new ObjectMapper.write(Map<Project,List<Task>> projectTasks = new LinkedMultiValueMap<>()) ;

EDIT: das ist die eigentliche Antwort:

{"Project [id=1, name=qsdsqd, type=null, done=false, dateDebut=2017-01-13, dateFin=2017-01-18, description=qsd, sponsor=qsd, client=qsd, showable=true]": 
[{"id":1,"title":"qsd ","description":"qsdqsd","dateFin":"2017-01-26","dateDebut":"2017-01-14","period":null,"done":false,"status":"Actif","priority":"Normal"}, 
{"id":2,"title":"task 2 ","description":"qsdqsd","dateFin":"2017-01-26","dateDebut":"2017-01-14","period":null,"done":false,"status":"Actif","priority":"Normal"}]} 

Wie kann Ich habe die Liste der Aufgaben auf der Client-Seite gelesen?

+2

, die nicht gültig JSON ist – RamblinRose

+0

, dass die Server-Antwort ist, die eine Rückkehr von 'ObjectMapper' –

+0

Warum das Minus ?? Bevor Sie es setzen, sollten Sie erklärt haben, –

Antwort

0

Zuerst ist Ihr JSON nicht gültig. Sind Sie sicher, dass es sich um einen Zeilenumbruch zwischen dem Wort Project und [id...] handelt. Eine gültige JSON wäre:

{ 
    "Project [id=1, dateDebut=2017-01-13, dateFin=2017-01-18, description=qsd, sponsor=qsd, ]": 
[ 
    {"id":1,"title":"qsd ","description":"qsdqsd","dateFin":"2017-01-26"}, 
    {"id":2,"title":"sss ","description":"sss","dateFin":"2017-01-26"} 
] 
} 

Sie können Schlüsselnamen wie das Objekt haben. Aber ich bin nicht sehr freundlich, um Daten abzurufen.

Wenn Sie nicht Ihre Datenschema ändern (oder wollen einfach nicht), können Sie über das Objekt mit dem

Object.keys(obj).forEach ((key) => { 
    console.log('key: ' + key); 
    console.log('value: ' + obj[key]); 

    /* you can iterate over your value (tasks) here */ 
    obj[key].forEach((task) => { 
     console.log('task1: ', task); 
    }); 

}); //where obj is your json 

iterieren Oder Sie können die erste Objekteigenschaft Zugang mit:

obj[Object.keys(obj)[0]]; //where obj is your json 

BEARBEITEN Wie von @ André Dion gezeigt, ist forEach am besten für die Iteration geeignet, nicht map. Und wir nehmen an, dass Ihre Antwort bereits vom Server (von Ihnen selbst oder von einer Bibliothek wie jQuery) analysiert wurde. Wenn nicht, sollten Sie eine JSON.parse(response); tun, um das Objekt abzurufen.

+1

Verwenden Sie nicht 'Array # map' zu iterieren, das ist' Array # forEach''s Job. Dies setzt auch ein Objekt voraus, nicht JSON. Sie müssten zuerst 'JSON.parse' für die Antwort aufrufen. –

+0

@ AndréDion [Object.keys] (https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Object/keys) gibt ein Array zurück. Ja, ich nehme an, es ist ein bereits geparstes Objekt. – mrlew

+0

Ich weiß, wie 'Object.keys' funktioniert. Meine Punkte stehen immer noch: iterieren Sie nicht mit 'map' und wenn' obj' die Server-Antwort darstellt, brauchen Sie zuerst 'var obj = JSON.parse (response)'. –

0

Sie können dies versuchen: Übernehmen Sie die obige Antwort in gespeichert in var Antwort.

for(var project in response) { // this will get every project 
    for(var i=0; i<project.length; i++) { // this will iterate over the array for each project which are your tasks. 
     console.log("task" + project[i]); 
     console.log(project[i]["id"]); // access each tasks id, similar for other attributes 
    } 
} 
Verwandte Themen