Python 无法保存复杂的JSON';DynamicBeddedDocument中的结构(Mongoengine,烧瓶)

Python 无法保存复杂的JSON';DynamicBeddedDocument中的结构(Mongoengine,烧瓶),python,json,mongodb,flask,mongoengine,Python,Json,Mongodb,Flask,Mongoengine,我在尝试使用mongoengine将JSON请求保存到MongoDB中的DynamicDocument时遇到问题 这是我的文件: class documentSource(DynamicEmbeddedDocument): name = StringField() class documentParent(Document): name = StringField(max_length=120) source = ListField(EmbeddedDocumentFi

我在尝试使用mongoengine将JSON请求保存到MongoDB中的DynamicDocument时遇到问题

这是我的文件:

class documentSource(DynamicEmbeddedDocument):
    name = StringField()

class documentParent(Document):
    name = StringField(max_length=120)
    source = ListField(EmbeddedDocumentField('documentSource'))
这是我的请求发布对象:

{
      "name": "Test", 
      "source": [{
          "name": "my first source"
          "metadata": {
            "name": "testing",
            "products": [
                {"name":"my product", "price":123}
            ]
          }
       },{
          "name": "my second source"
          "metadata": {
            "name": "Test",
            "profile": "foo"
          }
       }
      ]
    }
以下是我的烧瓶贴法:

def post(self):
        myObj = documentParent(
            name=self.data['name'],
            description=self.data['description'],
        )

        sourceList = []
        for i in self.data['source']:
            content = documentSource(**i)
            sourceList.append(content)
        myObj.source = sourceList
        myObj.save()
但问题是:

如果我发送此JSON不起作用:

{
      "name": "Test", 
      "source": [{
          "name": "my first source"
          "metadata": {
            "name": "testing",
            "products": [
                {"name":"my product", "price":123}
            ]
          }
       },{
          "name": "my second source"
          "metadata": {
            "name": "Test",
            "profile": "foo",
            "foo" : {
              "foo1": "var1"
            }
          }
       }
      ]
    }
但有了这个目标:

{
      "name": "Test", 
      "source": [{
          "name": "my first source"
          "metadata": {
            "name": "testing",
            "products": [
                "my product"
            ]
          }
       },{
          "name": "my second source"
          "metadata": {
            "name": "Test",
            "profile": "foo"
          }
       }
      ]
    }
列表列表也存在同样的问题:

"image":
  {"available_sizes":
    [[[150,
       19],
      "assets/images/150x150.png"],
     [[250,
       31],
      "assets/images/250x250.png"],
     [[450,
       57],
      "assets/images/450x450.png"]]
我认为对于复杂的json结构,mongoengine的解析器不起作用。我不知道如何解决这个问题,因为我无法控制源信息,最重要的是从源(例如:网站爬虫)获取一个JSON对象,并将其保存到我的动态文档中


提前感谢您的帮助。

您在“我的第一个来源”和“我的第二个来源”之后缺少逗号。您的JSON无效

有效期:

{
"name": "Test",
"source": [{
    "name": "my first source",
    "metadata": {
        "name": "testing",
        "products": [{
            "name": "my product",
            "price": 123
        }]
    }
}, {
    "name": "my second source",
    "metadata": {
        "name": "Test",
        "profile": "foo",
        "foo": {
            "foo1": "var1"
        }
    }
}]
}

用于验证JSON的漂亮工具:


您在“我的第一个来源”和“我的第二个来源”之后缺少逗号。您的JSON无效

有效期:

{
"name": "Test",
"source": [{
    "name": "my first source",
    "metadata": {
        "name": "testing",
        "products": [{
            "name": "my product",
            "price": 123
        }]
    }
}, {
    "name": "my second source",
    "metadata": {
        "name": "Test",
        "profile": "foo",
        "foo": {
            "foo1": "var1"
        }
    }
}]
}

用于验证JSON的漂亮工具:


不抱歉,复制并粘贴到此问题是一个错误,事实上我使用邮递员发出请求,邮递员有一个验证器。答案是正确的。您的JSON无效。接受它并发布一个不同的问题…不,对不起,复制并粘贴到这个问题是一个错误,事实上我使用邮递员发出请求,邮递员有一个验证器。答案是正确的。您的JSON无效。接受它并发布一个不同的问题。。。