2016-05-02 8 views
1
{ 
    "data": { 
     "weather": [{ 
      "id": 800, 
      "main": "Clear", 
      "description": "clear sky", 
      "icon": "01d" 
     }], 
     "id": 1271714, 
     "name": "Gandhi Nagar", 
     "cod": 200 
    }, 
    "status": 200, 
    "config": { 
     "method": "GET", 
     "transformRequest": [null], 
     "transformResponse": [null], 
     "url": "http://api.openweathermap.org/data/2.5/weather?lat=13.0414146&lon=80.2599991&appid=016040457f30e1967b4025f18e225136", 
     "headers": { 
      "Accept": "application/json, text/plain, */*" 
     } 
    }, 
    "statusText": "OK" 
} 

data.name文字列にアクセスできません。私が使用する方法は以下の通りです。下記のメソッドはエラーを返します。私はAngularJSに新しいです、私が間違いをしているなら私を助けてください。angular.fromJson()を使用してもjsonオブジェクトから文字列にアクセスすることができません。

var city = angular.fromJson(result.data.name); 
+1

あなたの '$ http'コールを表示できますか? –

+0

正常に動作します(JSONが正しく割り当てられていると仮定します)? [Plunkr Link](https://plnkr.co/edit/gOAcsOu0tJXxmGR2xkzL?p=preview) –

+0

どのようなエラーが返されますか? –

答えて

1

以下試してみてください。

result = angular.fromJson(result); 
var city = result.data.name; 
+0

のような他のすべてのデータにも機能します。しかし、私の方法がうまくいかなかった理由を教えてもらえますか? –

+1

angle.fromJson()が理解しているところでは、JSON入力が必要です。私は '' 'result''がJSONオブジェクトであると仮定しました。最初にプロパティを抽出し、その部分だけを文字列に変換するのではなく、まずJSONオブジェクト全体を変換し、必要なオブジェクトプロパティを抽出する必要があります。私が間違っているなら誰でも私を修正してください。 私が理解できなかったのは、最初にJsonの変換が必要だった理由です。単純に '' 'var city = result.data.name;' 'は通常私のために働くだけです。 – yclee0210

+0

@ yclee0210:あなたの説明は正しいです。さて、質問で提供されたデータは実際にはJSON文字列ではありません。実際には単純なオブジェクトであり、プロパティに直接アクセスするとエラーが発生しません。単純な文字列( 'result.data.name')を解析しようとしたためにエラーが発生した可能性があります。一方、数値の解析はうまくいきます( 'result.data.cod')。実際のJSON文字列は、外側の '{} 'が別の' '" 'のペアの中に置かれます。 – Fidel90

1

はこれを試してみてください。 angular.fromJsonは有効なjson文字列を必要とし、result.data.nameは有効なjson文字列ではありません。この文字列をJSONオブジェクトにデシリアライズした後、値を取得できます。

var city = angular.fromJson(result).data.name; 
関連する問題