gpt4 book ai didi

json - 如何使用Sencha Touch数据模型读取嵌套的JSON结构?

转载 作者:行者123 更新时间:2023-12-04 05:20:56 25 4
gpt4 key购买 nike

我一直在努力弄清楚整个晚上,但无济于事。我有一个JSON结构,如下所示(来自另一个系统,所以我不能更改其结构):

{
“ parent ”:{
“ parent ”:[
{
“parentId”:1,
“ children ”:{
“ child ”:[
{
“childId”:1,
},
{
“childId”:2,
}
]
}
},
{
“parentId”:2,
“ children ”:{
“ child ”:[
{
“childId”:1,
},
{
“childId”:2,
}
]
}
}
],
“pageNum”:1,
“pageSize”:2
}
}

但是,我无法弄清楚数据模型的正确结构。我已经尝试了以下方法,但是它不起作用。顺便说一句,我可以访问父信息。问题在于访问子信息。因此,我想我建立关系数据的方式有问题。

Ext.regModel(“ParentModel”,{
有很多: {
型号:“ChildrenModel”,
名称:“children.child”//对此位不太确定
},
栏位:[
{name:'parentId',type:'string'}
],

代理人: {
类型:“ajax”,
url:'models.json',
读者:{
类型:“json”,
root:'parents.parent'//正常工作
}
}
});

Ext.regModel('ChildrenModel',{
ownersTo:'ParentModel',//对此位不太确定
字段:[{name:'childId',type:'string'}]
});

与数据存储:

Ext.regStore('ParentModelStore',{
型号:“ParentModel”,
autoLoad:真
});

我正在使用以下模板,该模板为我获取父信息,但无法从中获取子数据:

myapp.views.ParentView = Ext.extend(Ext.Panel,{
布局:“卡片”,

initComponent:function(){
this.list =新的Ext.List({
itemTpl:新的Ext.XTemplate(
' ',
'

',
'{parentId}',//正常工作
'
',
' ',//这不起作用
{childId}
'
',
'',
),
商店:“ParentStore”,
});

this.listpanel = new Ext.Panel({
布局:“合适”,
项目:this.list,
});

this.items = this.listpanel;

myapp.views.ParentView.superclass.initComponent.apply(this,arguments);
},

});

Ext.reg('ParentView',myapp.views.ParentView);

我正在苦苦挣扎的事实是,“ child ”和“ parent ”两个元素分别被另一个元素“ child ”和“ parent ”包围。

任何帮助,不胜感激。

提前致谢,

菲利普

PS:如果我删除外部的“children”包装元素,而只保留内部的“children”元素(并在模型定义中将“children.child”更改为“child”),则代码可以正常工作。

PPS我在回答自己的问题:

h!我忘了将“children”元素添加到ParentModel的字段中。

应该如下所示(注意:我不需要指定“hasMany”或“associations”元素-不太确定为什么这样或包含它们的好处):

Ext.regModel(“ParentModel”,{
栏位:[
{name:'parentId',type:'string'},
{name:'children'}//非常重要的是要添加此字段
],

代理人: {
类型:“ajax”,
url:'models.json',
读者:{
类型:“json”,
root:'parents.parent'//正常工作
}
}
});

Ext.regModel('ChildrenModel',{
字段:[{name:'childId',type:'string'}]
});

该模板也可以正常工作:

' ',//此语法也适用。
{childId}
'
',

最佳答案

我最近遇到了类似的问题。

您需要指定到模型中所需数据的映射。
例如 :

Ext.regModel('Album', {
fields: [
{name: 'artist_name', mapping: 'album.artist.name'},
{name: 'artist_token', mapping: 'album.artist.token'},
{name: 'album_name', mapping: 'album.name'},
{name: 'token', mapping: 'album.token'},
{name: 'small_cover_url', mapping: 'album.covers.s'},
{name: 'large_cover_url', mapping: 'album.covers.l'}
]/*,
getGroupString : function(record) {
return record.get('artist.name')[0];
},*/

});

使用此JSON:
   {
"album":{
"covers":{
"l":"http://media.audiobox.fm/images/albums/V3eQTPoJ/l.jpg?1318110127",
"m":"http://media.audiobox.fm/images/albums/V3eQTPoJ/m.jpg?1318110127",
"s":"http://media.audiobox.fm/images/albums/V3eQTPoJ/s.jpg?1318110127"
},
"artist":{
"name":"New Order",
"token":"OyOZqwkN"
},
"name":"(The Best Of)",
"token":"V3eQTPoJ"
}

},

关于json - 如何使用Sencha Touch数据模型读取嵌套的JSON结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7707360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com