qml добавить поток json в listmodel

Я хотел бы добавить ответ в формате JSON с веб-сервера в QML ListModel. В настоящее время я использую

eventModel.append(jsonObject)

это прекрасно работает, если ответ содержит только строки или числа, но не если в ответе есть массив. Я использую код здесь, чтобы получить объект 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":""}]}

Все добавляется нормально рядом с Z. Если я читаю записи из списка моделей, я получаю это:

{"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 в модель списка?

1 ответ

Решение

Это взято из одного из моих приложений, и это может быть иллюстративным примером для вашего случая.

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]}
   );
Другие вопросы по тегам