tags:

views:

745

answers:

4

I have two JSON objects. One is python array which is converted using json,dumps() and other contains records from database and is serialized using json serializer. I want to combine them into a single JSON object.

For eg:

obj1 = ["a1", "a2", "a3"]

obj2 = [
    {
        "pk": "e1",
        "model": "AB.abc",
        "fields": {
            "e_desc": "abcd"
        }
    },
    {
        "pk": "e1",
        "model": "AB.abc",
        "fields": {
            "e_desc": "hij"
        }
    },

]

I want to merge them into single object as below:

finalObj = {
               obj1:["a1", "a2", "a3"],
               obj2: [
                         {
                             "pk": "e1",
                             "model": "AB.abc",
                             "fields": {
                             "e_desc": "abcd"
                              }
                         },
                         {
                              "pk": "e1",
                              "model": "AB.abc",
                               "fields": {
                               "e_desc": "hij"
                                }
                          },

                     ]  
           }

How can i do this?

+5  A: 

You can't do it once they're in JSON format - JSON is just text. You need to combine them in Python first:

data = { 'obj1' : obj1, 'obj2' : obj2 }
json.dumps(data)
Vinay Sajip
A: 

There's a bunch of things to look out for. The problem is that both objects are of different structure. You probably would need to understand the structure and merge them by hand.

Also look here: yaml-merge-in-python.

pitr
+3  A: 

Not sure if I'm missing something, but I think this works (tested in python 2.5) with the output you specify:

import simplejson

finalObj = { 'obj1': obj1, 'obj2': obj2 }
simplejson.dumps(finalObj)
ars
A: 

You have two techniques. The list version suffers from the limitation that the order matters. However, the JSON is slightly simpler-looking. The dictionary version has nested data, which looks more complex.

data = { 'obj1' : obj1, 'obj2' : obj2 }
json.dumps(data,indent=2)


data = [ obj1, obj2 ]
json.dumps(data,indent=2)
S.Lott