Python 无法保存复杂的JSON';DynamicBeddedDocument中的结构(Mongoengine,烧瓶)
我在尝试使用mongoengine将JSON请求保存到MongoDB中的DynamicDocument时遇到问题 这是我的文件: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
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无效。接受它并发布一个不同的问题。。。