2016-03-30 6 views
0

EmberJSには新しく、残念ながらルートまたはidsが含まれていないJSONを処理する必要があります。やってみようとしています。Ember - JSONレスポンスをクリーンアップする方法

私はこれを行うにはemberシリアライザを使用する必要があると仮定します。

これは私が現在、私のapi/locationsから得るものです:

[ 
    { 
    "uri": "/location/1", 
    "name": "ATLANTA" 
    }, 
    { 
    "uri": "/location/2", 
    "name": "NORTH VIRGINIA" 
    } 
] 

私はそれがルートとIDのではなく、このように見える必要があることを前提としています

{ 
    "locations":[ 
    { 
     "id":"1", 
     "uri":"/location/1", 
     "name":"ATLANTA" 
    }, 
    { 
     "id":"2", 
     "uri":"/location/2", 
     "name":"NORTH VIRGINIA" 
    } 
    ] 
} 

私はJSONSerializerを追加しました下のapp/serializers/location.js

import DS from 'ember-data'; 

export default DS.JSONSerializer.extend({ 
    // how can I manufacture an id here, say with index 
    // how to I assign it to a root called "locations" 
}); 

このJSONSer ializer私は店内でレコードを取得しますが、それは唯一のものです.IIDを持たないため、両方のエントリが表示されるためです。

only one record and no id

私は助け、このデータをマッサージを開始する方法の例を必要としています。私が試した例は何もしなかった。

+0

これは役立ちます:http://www.codeandtechno.com/code/2015/7/5/transforming-json-payload-to-include-object-root-with-restadapter-in-emberjs – Gregg

+0

これは説明します何が必要ですか:http://emberigniter.com/fit-any-backend-into-ember-custom-adapters-serializers/ – emberigniter

+0

おかげさまで、codeandtechnoは私が扱っているバージョンよりも非推奨または改名されたメソッドを参照しています。その解決策は、私が追随するのが少し難しいです。そして私はemberigniterに出くわしました。彼らは私がこれをどうやってできるかについていくつかのヒントを提供しましたが、これは2.0のために好きで、私は1.13で働いています。それは私が打っていた別の問題です、別のバージョンのフレームワークは、おかしくなるでしょう! – pjdicke

答えて

1

JSONSerializerが私が言及した根本的な問題を解決するように見えますが、私が働いていたものに着陸するまで、シリアライザで利用可能なメソッドを試してIDの問題を解決できました。私の最終的な解決策は、次のようになります。

export default DS.JSONSerializer.extend({ 

    normalize: function(typeClass, hash) { 
     hash['id'] = parseFloat(hash.uri.match(/\d+/g)) 
     return this._super.apply(this, arguments); 
    } 

}); 

十分にシンプルだが、WOW、私はこのような何かを行う方法を示した単一の例を見つけることができませんでした。

関連する問題