Python 将两个json字符串合并而不使用;或';

Python 将两个json字符串合并而不使用;或';,python,json,python-3.x,Python,Json,Python 3.x,我有两个JSON字符串 字符串1: {"step":"example step", "data":"example data", "result":"example result"} 字符串2: {"attachments":[ { "data":"gsddfgdsfg...(base64) ", "filename":"example1.txt", "contentType":"plain/text" } ] } 我需要将两者结合起来: 预期对象: { "step":"example

我有两个JSON字符串

字符串1:

{"step":"example step", "data":"example data", "result":"example result"}
字符串2:

{"attachments":[ { "data":"gsddfgdsfg...(base64) ", "filename":"example1.txt", "contentType":"plain/text" } ] }
我需要将两者结合起来: 预期对象:

{
   "step":"example step",
   "data":"example data",
   "result":"example result",
   "attachments":[
      {
         "data":"gsddfgdsfg...(base64) ",
         "filename":"example1.txt",
         "contentType":"plain/text"
      },
      {
         "data":"gsddfgdsfg...(base64) ",
         "filename":"example2.txt",
         "contentType":"plain/text"
      }
   ]
}

在每一次尝试中,第二个字符串都会在数组中出现“或”,这将不起作用。

您不应该尝试将它们作为字符串进行操作–这将是脆弱的,并且非常特定于字符串。相反,请将字符串解析为字典,执行任何您想要的操作,然后将它们转储回JSON字符串:

import json

s1 = '{"step":"example step", "data":"example data", "result":"example result"}'
s2 = '{"attachments":[ { "data":"gsddfgdsfg...(base64) ", "filename":"example1.txt", "contentType":"plain/text" } ] }'

d1 = json.loads(s1)
d2 = json.loads(s2)

d1.update(d2)

json.dumps(d1)
这将为您提供一个干净的json字符串:

'{"step": "example step", "data": "example data", "result": "example result", "attachments": [{"data": "gsddfgdsfg...(base64) ", "filename": "example1.txt", "contentType": "plain/text"}]}'
如果您想要对象而不是字符串,
d1
现在是:

{'step': 'example step',
 'data': 'example data',
 'result': 'example result',
 'attachments': [{'data': 'gsddfgdsfg...(base64) ',
   'filename': 'example1.txt',
   'contentType': 'plain/text'}]}

您实际尝试了什么?我已经将其分为几个“阶段”,因此我有一个方法来构建附件数组,然后我尝试合并字符串1、静态文本(,“附件”):[、数组元素、右括号(]}如果没有您自己尝试过的任何有形代码,就不可能实际调试您实际遇到的错误。谢谢@MarkMeyer,我正在相应地更新我的代码,并将在您的解决方案正常工作时对其进行测试,但我仍然对s2有问题,因为它仍在转义。阵列正在以专用方式构建方法。s2的其余部分被添加到另一个方法中。我需要对此进行更多的研究