2016-09-12 8 views
-1

私は次の形式でのRESTfulサービスからJSON応答を取得しています、角度のJsで解析非標準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" 
     ] 
     ] 
    } 
} 

のレコードは、テーブル名と列との記録は以下の別々の配列から始めています。 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" 
    } 
] 

私のためにこれを行うことができるディレクティブがありますか、カスタム機能、アイデアを作成する必要がありますか?

+0

あなたは、最初の配列(列)を2番目の配列(レコード)にマッピングするカスタム関数を書く必要があるようです。カップルのループとあなたはよかった –

+1

jsonが有効です。では、「Angularはこの形式のデータを受け入れていません」という意味はどうですか? –

答えて

0

期待したフォームに合わせてデータを手作業で変更するだけの理由はありますか?

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

これにも注意してください。これは、recordsの各配列の長さが常に列名の数と同じになることを期待しています。

+0

数字は常に同じであるので、うまく動作します。私は今日いくつかの新しいことを学びます。 – Nabeel