为嵌套的json元素创建记录
我现在有下面的json数据,我想基于这个仪式创建一个记录,现在我有下面的结构来创建记录,但我没有;我不知道如何将联系人信息作为嵌套元素放置 注意:我直接从网格中读取值(但从网格中我没有得到嵌套元素联系人信息,然后想要创建记录) 记录 JSON为嵌套的json元素创建记录,json,extjs,Json,Extjs,我现在有下面的json数据,我想基于这个仪式创建一个记录,现在我有下面的结构来创建记录,但我没有;我不知道如何将联系人信息作为嵌套元素放置 注意:我直接从网格中读取值(但从网格中我没有得到嵌套元素联系人信息,然后想要创建记录) 记录 JSON 我想发送一个json格式的数据,如上所述,但一旦我点击表单的提交按钮。所以我想知道如何在extjs中创建一个记录,这样我就可以在您可能正在寻找的json中发送嵌套元素 例如: { name: 'CANDI_EMAIL_1', mapping: 'CONTA
我想发送一个json格式的数据,如上所述,但一旦我点击表单的提交按钮。所以我想知道如何在extjs中创建一个记录,这样我就可以在您可能正在寻找的json中发送嵌套元素 例如:
{ name: 'CANDI_EMAIL_1', mapping: 'CONTACT_INFO.CANDI_EMAIL_1'},
对于编写,您还需要更新正在使用的Ext.data.JsonWriter
的toHash
函数。默认值不能处理嵌套对象
最简单的方法可能是编写一个特定的toHash
函数,而不是泛化函数。给定一个Ext.data.Record
,如下所示:
var rec = new record({
...
'CANDI_EMAIL_1': 'foo@example.com'
...
});
CandiWriter = Ext.extend(Ext.data.JsonWriter, {
toHash: function(rec) {
return {
CONTACT_INFO: {
CANDI_EMAIL_1: rec.get('CANDI_EMAIL_1')
}
};
}
})
然后,您将使用如下JsonWriter:
var rec = new record({
...
'CANDI_EMAIL_1': 'foo@example.com'
...
});
CandiWriter = Ext.extend(Ext.data.JsonWriter, {
toHash: function(rec) {
return {
CONTACT_INFO: {
CANDI_EMAIL_1: rec.get('CANDI_EMAIL_1')
}
};
}
})
如果您希望经常这样做,您可以编写一个通用的,但我希望它比维护一个专门的
JsonWriter
需要更长的时间,我想这个映射是用于从JSON接收数据的,我想用一个嵌套的字段发送JSON。你有没有任何例子,比如我可以在哪里找到如何覆盖JsonWriter的哈希函数?在我的回答中,我给出了一种方法,通过创建一个子类JsonWriter
来覆盖它。然后,您将为您的编写器使用一个实例CandiWriter
,而不是一个实例JsonWriter
。这意味着我需要在我的JsonStore中传递CandiWriter?var CandiWriter=new CandiWriter();并将其作为var storeGroom=new Ext.data.Store({id:'storeGroom',restful:true,proxy:proxyGroom,autoSave:false,reader:reader,writer:candiWriter})传递;在写了这段代码之后,我没有得到嵌套元素,它的行为仍然与默认的一样