Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为嵌套的json元素创建记录_Json_Extjs - Fatal编程技术网

为嵌套的json元素创建记录

为嵌套的json元素创建记录,json,extjs,Json,Extjs,我现在有下面的json数据,我想基于这个仪式创建一个记录,现在我有下面的结构来创建记录,但我没有;我不知道如何将联系人信息作为嵌套元素放置 注意:我直接从网格中读取值(但从网格中我没有得到嵌套元素联系人信息,然后想要创建记录) 记录 JSON 我想发送一个json格式的数据,如上所述,但一旦我点击表单的提交按钮。所以我想知道如何在extjs中创建一个记录,这样我就可以在您可能正在寻找的json中发送嵌套元素 例如: { name: 'CANDI_EMAIL_1', mapping: 'CONTA

我现在有下面的json数据,我想基于这个仪式创建一个记录,现在我有下面的结构来创建记录,但我没有;我不知道如何将联系人信息作为嵌套元素放置

注意:我直接从网格中读取值(但从网格中我没有得到嵌套元素联系人信息,然后想要创建记录)

记录

JSON


我想发送一个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})传递;在写了这段代码之后,我没有得到嵌套元素,它的行为仍然与默认的一样