2017-04-19 12 views
-1

RestサービスはJSONに多くのフィールドを提供します。JSON to object(typescript、angular 2)

1)JSONをオブジェクトに変換する方法はありますか?その前にクラスをurselfにする必要はありませんか?それを変換し、すぐにその値を読むことができますか?

2)JSONからデータを取得する方法はありますか?1)?たとえば、「名前」:「John」が必要なだけで、大規模なJSONファイルの残りの部分で気にしたくない場合は、

+1

JSON.objectifyを試しましたか? –

答えて

1

JSON.parse()を使用してオブジェクトに変換します。検索条件に基づいてオブジェクトをフィルタリングできます。

var returnedJSON = JSON.parse('[{"name": "jason"}, {"name": "jake"}, {"name": "jill"}]'); 

var filteredResults = returnedJSON.filter((item) => { 
    return item.name === "jason" 
}); 

console.log(filteredResults); // returns {name:"jason"} 
0

1.機能を有するようなもの、のためのクラスが必要と思いますしない限り、はい、あなたは、インターフェイスを使用して

はおそらく、クラスの代わりに奨励されるだろうことができます。

インターフェイスはIDEとプログラマのための助けになります。間違った値や間違ったタイプの値を割り当てようとすると、IDEから警告が表示されます。インターフェイスは実行時には存在しません。実行時にはコードがプレーンJSにコンパイルされ、JSにはインターフェイスがないため、すべてがPOJOになります。

あなたがあなたのデータを受信したときので、あなたは、単にそれを割り当てることができます。

最初のマッピングによって:

.map(res => res.json()); 

data: Object = {}; //declare your object 

// your subscribe 
.subscribe(data => { 
    this.data = data; 
}) 

あなたが見ることができるように、我々は型付けされていません他のものにはdataがありますが、それはオブジェクトです。


2.はい、あなたはあなたがオブジェクトを取得していることを述べただけで、特定の値

を抽出することができます。次に、特定の値だけをマップできます。これは、単に別の時間をマッピングすることによって、行うことができます。

.map(res => res.json()); 
.map(obj => obj.name) 

これはちょうどあなたの応答からnameを返します。あなたの代わりに配列を受信して​​いる場合


、あなたは.filter().find()を使用することができます。 filterは、条件に一致するオブジェクトの配列を返します。findは、条件に一致する特定のオブジェクトを検索し、それをObjectとして返します。ここにサンプルがあります:

// will return an array of objects, with name matching 'John' 
.map(res => res.json().filter(data => data.name == 'John')) 

//will return a single object from an array of objects 
.map(res => res.json().find(data => data.name == 'John')) 

これは役に立ちます。 :)

関連する問題