1

Sencha Touch 2 ストアで rootProperty 値を使用して、Foursquare Venues API から取得した JSON をロードしようとしていますが、私の人生ではそれを機能させることができません。

ドキュメントによると、rootProperty をドット表記で「response.venues」に設定する必要がありますが、リストには入力されません。json を別のファイルに入れ、「response」ヘッダーと「venues」ヘッダーを削除したところ、問題なく動作しました。率直な答えがどこにも見つからないので、ここで見逃している何かが明らかに明白であるに違いありません。

私のモデル:

Ext.define('App.model.4SqVenue', {
extend: 'Ext.data.Model',

config: {
    fields: [
        {name: 'name', id: 'id'}
    ]
}
});

私の店:

Ext.define('App.store.4SqVenues', {
extend: 'Ext.data.Store',
requires: [
    'App.model.4SqVenue'
],

config: {
    model: 'App.model.4SqVenue',
    storeId: '4SqVenuesStore',

    proxy: {
        type: 'jsonp',
        url: 'foursquare venue request',
        reader: {
            type: 'json',
            rootProperty: 'response.venues'
        }
    }
}
});

私の見解:

Ext.define('App.view.4SqVenues', {
extend: 'Ext.List',
xtype: '4SqVenuesCard',
requires: [
    'App.store.4SqVenues'
],

config: {
    fullscreen: true,
    itemTpl: '{name}',
    store: '4SqVenuesStore'
}
});

4sq API からの応答:

{
"meta": {
    "code": 200
},
"response": {
    "venues": [
        {
            "id": "4a3ad368f964a52052a01fe3",
            "name": "Four Peaks Brewing Company",
            "contact": {
                "phone": "4803039967",
                "formattedPhone": "(480) 303-9967",
                "twitter": "4PeaksBrewery"
            },
            "location": {
                "address": "1340 E 8th St",
                "crossStreet": "at Dorsey Ln.",
                "lat": 33.4195052281187,
                "lng": -111.91593825817108,
                "distance": 1827,
                "postalCode": "85281",
                "city": "Tempe",
                "state": "AZ",
                "country": "United States"
            },
            "categories": [
                {
                    "id": "4bf58dd8d48988d1d7941735",
                    "name": "Brewery",
                    "pluralName": "Breweries",
                    "shortName": "Brewery",
                    "icon": {
                        "prefix": "https://foursquare.com/img/categories/nightlife/brewery_",
                        "sizes": [
                            32,
                            44,
                            64,
                            88,
                            256
                        ],
                        "name": ".png"
                    },
                    "primary": true
                }
            ],
            "verified": true,
            "stats": {
                "checkinsCount": 24513,
                "usersCount": 8534,
                "tipCount": 235
            },
            "url": "http://www.fourpeaks.com",
            "likes": {
                "count": 0,
                "groups": []
            },
            "menu": {
                "type": "foodAndBeverage",
                "url": "https://foursquare.com/v/four-peaks-brewing-company/4a3ad368f964a52052a01fe3/menu",
                "mobileUrl": "https://foursquare.com/v/4a3ad368f964a52052a01fe3/device_menu"
            },
            "specials": {
                "count": 0,
                "items": []
            },
            "hereNow": {
                "count": 1,
                "groups": [
                    {
                        "type": "others",
                        "name": "Other people here",
                        "count": 1,
                        "items": []
                    }
                ]
            }
        }
    ]
}
}
4

2 に答える 2

2

私は非常によく似た問題を抱えています。基本的に、rootProperty を定義せずに json をロードすれば問題ありません。しかし、いったん定義すると、動作が停止します (Architect で報告された不適切な構成エラー)。

したがって、rootProperty を「レコード」として定義するまで、belwo は opnlu で動作します

{ "records" : [ { "artist" : "Champion",
        "index" : 1,
        "recordid" : "r00899659",
        "trackname" : "1 To 2"
      },
      { "artist" : "Champion",
        "index" : 2,
        "recordid" : "r00899668",
        "trackname" : "Is Anybody There?"
      }
      .......
    ],
  "rowcount" : 10,
  "timestamp" : "1/07/2012 5:05:19 AM"
} 
于 2012-07-01T05:08:17.030 に答える
0

最初に、応答のドキュメントごとに関数呼び出しでラップする必要があります。次に、モデル内で変換関数を使用する必要がある場合があります。root プロパティを response に設定し、convert を使用して会場プロパティから他のすべてのデータを取り込むなどです。

于 2013-10-17T03:06:26.387 に答える