阅读列表中的JSON列表

时间:2017-01-12 17:21:11

标签: javascript angularjs json

我有一个像这样的json:

{
   "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"}
 ]
}

源自:return new ObjectMapper.write(Map<Project,List<Task>> projectTasks = new LinkedMultiValueMap<>()) ;

编辑:这是真正的回应:

{"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"}]}

如何阅读客户端的任务列表?

2 个答案:

答案 0 :(得分:0)

首先,您的JSON无效。您确定这是Project[id...]之间的换行符。有效的JSON将是:

{
   "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"}
 ]
}

可以拥有这样的对象键名称。但是我检索数据不是很友好。

如果您无法更改数据架构(或者只是不想要),则可以使用

迭代对象
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

或者您可以使用以下命令访问第一个对象属性:

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

编辑正如@AndréDion所指出的,forEach最适合迭代,而不是map。我们假设您的响应已经从服务器解析(由您自己或像jquery这样的lib)。如果没有,您应该JSON.parse(response);来检索对象。

答案 1 :(得分:0)

你可以试试这个: 假设存储在var响应中的上述响应。

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
    }
}