2016-11-11 49 views
0

我想從Web服務器向QML ListModel附加JSON答案。目前我使用qml將json流附加到listmodel

eventModel.append(jsonObject) 

如果答案只包含字符串或數字但如果有答案中的數組,工作正常。我使用here的代碼來獲取JSON對象。

這是答案的一行:

{"i":3814086,"t":"d","s":1479970800,"sw":"Do","sds":"24.11.16","ss":"08:00","e":1479996000,"eds":"24.11.16","es":"15:00","f":false,"z":[{"i":223500,"d":true,"r":"","h":null,"hs":null,"hss":"","he":null,"hes":""}]} 

一切都被添加ž旁邊的罰款。如果我從列表模型中讀取條目,我可以得到:

{"objectName":"","i":3814086,"t":"d","s":1479970800,"sw":"Do","sds":"24.11.16","ss":"08:00","e":1479996000,"eds":"24.11.16","es":"15:00","f":false,"z":{"objectName":"","count":1,"dynamicRoles":false}} 

它看起來像z中的所有東西都丟失了。我已經試過再次添加它

for(var i in jsonObject){ 
    eventModel.append(jsonObject[i]) 
    eventModel.set(i, {"z":jsonObject[i]["z"]}) 
} 

但結果是一樣的。

是這樣的事情是不可能的,或者當我將這個JSON對象附加到列表模型時,我在這裏做錯了什麼?

+0

'ListModel'包含'ListElement'項目的列表。根據[docs](http://doc.qt.io/qt-5/qml-qtqml-models-listelement.html#details),它只能包含簡單的值 - 「值必須是簡單的常量;字符串,布爾值,數字或枚舉值。您嘗試賦予'z'的值是對象或數組。 – folibis

+0

不好,我沒看到。我猜這裏沒有工作,是嗎?因爲我不知道如何處理JSON,如果我不能將它存儲在ListModel中=( – Sikarjan

+0

如果我做了'eventModel.set(i,{「zn」:jsonObject [i] [「z」] [0] })'zn被添加爲數組,並且我有所有的值。可能二維數組(或者現在的z是什麼)不能被添加到ListModel,但是數組可以工作 – Sikarjan

回答

0

這是取自我的一個應用程序,它可以是您的案例的說明性示例。

ListModel { 
     id:agenciesModel 

     ListElement { 
      name: "401" 
      eventListDates :[ 
       ListElement{ 
        date:"jj/mm/aaaa" 
       } 

      ] 
     } 

     ListElement { 
      name: "402" 
      eventListDates :[ 
       ListElement{ 
        date:"jj/mm/aaaa" 
       } 

      ] 


     } 

     ListElement { 
      name: "403" 
      eventListDates :[ 
       ListElement{ 
        date:"jj/mm/aaaa" 
       } 

      ] 



     } 
} 
var listObjJS = [{"date":"10/10/2019"}, 
       {"date":"10/11/2011"}, 
       {"date":"10/11/2011"}, 
       {"date":"10/11/2011"} 
       ]; 

for(var j=0;j<listObjJS.length;j++) 
    agenciesModel.get(i).eventListDates.append(
     { date : listObjJS[j].toString().split(":")[1]} 
    ); 
+0

基本上我應該把二維數組轉換成一維數組,但是我沒有看到我應該如何存儲我的數據,以便我仍然可以訪問它.JavaScrit沒有變量變量名稱, ?所以我不能使用z1,z2等,然後用z + j作爲變量名做一個循環... – Sikarjan