mongoengineを使用してMongoDBのDynamicDocumentにJSONリクエストを保存しようとして問題があります。ここでDynamicEmbeddedDocument(Mongoengine、Flask)に複雑なJSON構造を保存できません
は私のドキュメントです:
class documentSource(DynamicEmbeddedDocument):
name = StringField()
class documentParent(Document):
name = StringField(max_length=120)
source = ListField(EmbeddedDocumentField('documentSource'))
これは私のリクエストPOSTオブジェクトです:
{
"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"
}
}
]
}
は、ここに私のフラスコPOSTメソッドです:
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()
しかし、問題は次のとおりです。
{
"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は動作しませんsendが
{
"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オブジェクトを取得して、それを自分のDynamicDocumentに保存することです(Webクローラーなど)。
ご協力いただきありがとうございます。
申し訳ありませんいいえ、この質問にコピー&ペーストするとエラーだった実際に私が使用して郵便配達員はリクエストを行い、郵便配達員はバリデーターを持っています。 –
答えは正しいです。 JSONが無効です。それを受け入れ、別の質問を投稿する... –