在Angular Js中解析非标准JSON

Parsing Non Standard JSON in Angular Js

本文关键字:非标准 JSON Angular Js      更新时间:2023-09-26

我从一个rest式服务得到一个JSON响应,格式如下,

{
   "comments":{
      "columns":[
         "clientId",
         "treatmentDate",
         "comments",
         "photo",
         "practitioner"
      ],
      "records":[
         [
            "1",
            "2016-09-12",
            "Some Coments",
            "0",
            "Doc 4"
         ],
         [
            "1",
            "2016-09-11",
            "DDD oNE",
            "1",
            "Docc 3"
         ]
      ]
   }
}

Record从表名开始,然后是单独的列和记录数组。Angular不接受这种格式的数据。但是,如果我像下面这样提供标准格式的数据,它就可以完美地工作。

[
   {
      "clientId":"1",
      "treatmentDate":"2016-09-12",
      "comments":"Some Coments",
      "photo":"0",
      "practitioner":"Doc 4"
   },
   {
      "clientId":"1",
      "treatmentDate":"2016-09-11",
      "comments":"DDD oNE",
      "photo":"1",
      "practitioner":"Docc 3"
   }
]

是否有一个指令,可以为我做到这一点,或者我应该创建一个自定义函数,任何想法?

是否存在不能手动重塑数据以符合预期形式的原因?

var data = json.comments.records.map(function(record) {
    return json.comments.columns.reduce(function(reshaped, columnName, idx) {
        reshaped[columnName] = record[idx];
        return reshaped;
    }, {});
});

不过要小心;这期望records中每个数组的长度始终与列名的数量相同。