将两个JSON对象合并为一个

16
我有两个JSON对象。一个是Python数组,它使用json.dumps()进行转换,另一个包含来自数据库的记录,并使用JSON序列化器进行序列化。我想将它们合并为一个单独的JSON对象。
例如:
obj1 = ["a1", "a2", "a3"]

obj2 = [{
    "pk": "e1",
    "model": "AB.abc",
    "fields": {
      "e_desc": "abcd"
    }
  },
  {
    "pk": "e1",
    "model": "AB.abc",
    "fields": {
      "e_desc": "hij"
    }
  }
]
我想将它们合并为一个对象,如下所示:
finalObj = {
  obj1: ["a1", "a2", "a3"],
  obj2: [{
      "pk": "e1",
      "model": "AB.abc",
      "fields": {
        "e_desc": "abcd"
      }
    },
    {
      "pk": "e1",
      "model": "AB.abc",
      "fields": {
        "e_desc": "hij"
      }
    }
  ]
}

我该怎么做?


在客户端上,typeof(finalObj.obj2)返回的是字符串。要获取JSON对象,请使用JSON.parse(finalObj)。 - Shankar ARUL
3个回答

23

一旦数据被格式为JSON,就无法完成此操作 - JSON只是文本。您需要首先在Python中将它们组合起来:

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

6

我不确定是否有遗漏,但我认为这个代码可以实现你所指定的输出(在Python 2.5中测试过):

import simplejson

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

0

你有两种技术可选。列表版本的局限在于顺序很重要。然而,JSON 稍微看起来更简单一些。字典版本具有嵌套数据,看起来更加复杂。

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


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

谢谢。你为什么要添加 indent=2 - Dr_Zaszuś
缩进参数指定了行开头使用的空格。我们可以使用json的缩进参数 - https://pynative.com/python-prettyprint-json-data/ - Vivek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接