最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Merge two different json object in extjs - Stack Overflow

programmeradmin2浏览0评论

Let's say my first json object is

  "jvtdata":{
    "tranid":"100001",
    "trandate":"Sun Jan 20 2013 00:00:00 GMT+0800 (Taipei Standard Time)",
    "trantype":"f"
  }

and my second data is

 "detail" : [
   {
      "id": "1",
      "obj": "data1"
   },
   {
      "id": "2",
      "obj": "data2"
   },
   {
      "id": "3",
      "obj": "data3"
   }

]

how do I make it like this in extjs 4?

  "jvtdata":{
    "tranid":"100001",
    "trandate":"Sun Jan 20 2013 00:00:00 GMT+0800 (Taipei Standard Time)",
    "trantype":"f",
    "detail" : [
   {
      "id": "1",
      "obj": "data1"
   },
   {
      "id": "2",
      "obj": "data2"
   },
   {
      "id": "3",
      "obj": "data3"
   }

]
  }

Let's say my first json object is

  "jvtdata":{
    "tranid":"100001",
    "trandate":"Sun Jan 20 2013 00:00:00 GMT+0800 (Taipei Standard Time)",
    "trantype":"f"
  }

and my second data is

 "detail" : [
   {
      "id": "1",
      "obj": "data1"
   },
   {
      "id": "2",
      "obj": "data2"
   },
   {
      "id": "3",
      "obj": "data3"
   }

]

how do I make it like this in extjs 4?

  "jvtdata":{
    "tranid":"100001",
    "trandate":"Sun Jan 20 2013 00:00:00 GMT+0800 (Taipei Standard Time)",
    "trantype":"f",
    "detail" : [
   {
      "id": "1",
      "obj": "data1"
   },
   {
      "id": "2",
      "obj": "data2"
   },
   {
      "id": "3",
      "obj": "data3"
   }

]
  }
Share edited Jan 23, 2013 at 21:20 dbrin 15.7k4 gold badges58 silver badges85 bronze badges asked Jan 23, 2013 at 18:37 JohnJohn 8383 gold badges25 silver badges40 bronze badges 1
  • Hi, any answer below helpful to you? – dbrin Commented Jan 29, 2013 at 18:54
Add a ment  | 

5 Answers 5

Reset to default 2

This is not an ExtJS specific question.

If you truly have two Objects jvtdata and detail (and not a JSON string, which you can easily turn into an Object) you can simply do the following:

jvtdata.detail = detail

EDIT: See console for this fiddle: http://jsfiddle/FXT9k/

Ext.apply might be what you're looking for.

var first = {
    "jvtdata":{
        "tranid":"100001",
        "trandate":"Sun Jan 20 2013 00:00:00 GMT+0800 (Taipei Standard Time)",
        "trantype":"f"
    }
};
var second = {
    "detail" : [{
        "id": "1",
        "obj": "data1"
    }, {
        "id": "2",
        "obj": "data2"
    }, {
        "id": "3",
        "obj": "data3"
    }]
};
var merged = {
    jvtdata: Ext.apply(first.jvtdata, second)
};

Looking at your ment on another answer, here is what you are looking for(I think?):

var details = Ext.Array.pluck(store_jvdtl.data.items, 'data');
var jvtData = Ext.Array.pluck(store_jvhdr.data.items, 'data')[0];
jvtData["details"] = details;
jvtData = Ext.encode(jvtData);

I believe you need the merge method:

http://docs.sencha./ext-js/4-1/#!/api/Ext-method-merge

Here is paring the function for ExtJS:

Ext.Object.equals(object1, object2)
发布评论

评论列表(0)

  1. 暂无评论