2012-03-15 89 views
2

我有一個小問題,我需要一些JSON數據加載到我的網格,但我有特異性目的JSON格式是這樣的:ExtJS的自定義讀者

{"response":[ 
    76297, 
    {"aid":66132303,"owner_id":30729520,"artist":"Шакира - Танго","title":"So objection!! I don't wanna be the exception to get a bit of your attention... I love you for free and I'm not your mother, but you don't even bother... Objections!! I'm tired of this triangle... GOT DIZZY DANCING TANGO&#3","duration":224,"url":"http:\/\/cs1663.vkontakte.ru\/u17640367\/audio\/ebde4092fde5.mp3","lyrics_id":"2203614"}, 
    {"aid":129159521,"owner_id":23962687,"artist":"Yann Tiersen","title":"Mother's Journey (Ennja Remix)","duration":281,"url":"http:\/\/cs6000.vkontakte.ru\/u97497795\/audio\/fb309491bc82.mp3","lyrics_id":"21301612","album":"21017129"}, 
    {"aid":81267321,"owner_id":673065,"artist":"Hurts","title":"Mother Nature","duration":170,"url":"http:\/\/cs4633.vkontakte.ru\/u673065\/audio\/d329378eb2d2.mp3","lyrics_id":"5693202"}] 
} 

所以數組的第一個元素是總記錄數,而其他則是要加載的記錄。 如果我嘗試將這樣的記錄加載到我的網格,我在底部有空行,什麼是解決方案?我應該使用一些「定製」閱讀器,如何實現它?

回答

3

是的。很可能您需要擴展標準Json閱讀器(Ext.data.reader.Json)來首先解析長度並開始解析第二項中的記錄。

更新:實際上很容易。

  1. 首先,你需要弄清楚我們的地方標準閱讀器的行爲不想要它的行爲方式。添加跟蹤到標準的閱讀器類,看看發生了什麼。很有可能它會在readResponse()方法的某個地方。

  2. 創建您自己的擴展標準的讀者類。簡單的繼承。

  3. 用新邏輯覆蓋你需要的方法。

ExtJs代碼寫得非常好,並且評論。我發現閱讀和理解它非常有趣。

作爲一個便箋,我會補充說這個任務(用你的功能擴展現有的ExtJs代碼)對於更好地理解ExtJs如何在內部工作是一個巨大的幫助,在那之後你會感覺更加舒適的使用ExtJs。

+0

你能舉一些例子嗎?我無法想象如何做到這一點=( – 2012-03-15 22:00:18

+1

好吧,在這裏發佈我的例子不會解決任何問題,因爲我的問題是完全不同的,請讓我在答案中添加更多描述。 – sha 2012-03-16 00:37:03

+0

非常感謝,它超過了我只能想象! – 2012-03-16 09:18:31