gpt4 book ai didi

java - Mongo插入带有嵌套数组元素的json文档

转载 作者:行者123 更新时间:2023-12-01 11:15:52 25 4
gpt4 key购买 nike

我有一个包含嵌套数组元素的 json 文档。但是当我将文档添加到我的 mongo 数据库时,我只使用以下代码写入最后一个数组:

    mongoColl = mongoDatabase.getCollection("coll"); 
DBObject dbo = (DBObject)JSON.parse(myJsonString);
mongoColl.insert(dbo);

dbObject = mongoColl.findOne();

String s = JSON.serialize(dbObject);
JSONObject json = null;
try
{
json = new JSONObject(s);
System.out.println(json.toString(4));
}
catch (JSONException e1)
{
e1.printStackTrace();
}

我很困惑,无一异常(exception),谁能正确插入我的json文档中的所有数组元素?

编辑我尝试了多种方法,但都输出相同的结果(json 文档中的最后一个数组元素)

这是我的 json 文档:My JSON doc

        // Method 2
Object jsonObj = s;
Object o = com.mongodb.util.JSON.parse(jsonObj.toString());
DBObject dbObj = (DBObject) o;
WriteResult result = mongoColl.insert(dbObj);
System.out.println("Write Result: " + result);

// Method 3
JSONArray jsonArray = new JSONArray(s);
JSONObject jsonObject = new JSONObject();
jsonObject.put("GameofThrones", jsonArray);
DBObject bson = (DBObject) JSON.parse(jsonObject.toString());
WriteResult result = mongoColl.insert(bson);
System.out.println("Write Result: " + result);

结果如下:Result

最佳答案

这里的问题是您的 JSON 无效。这里的问题是您在同一个文档中一遍又一遍地重复相同的“问题”数组元素,即:

{
"show":[
{
"season":[
{
"questions":[
{ ... } // lots of questions entries
],
"questions": [ // It's the same key!
]
}
]
}
]
}

折叠的编辑器屏幕截图,以便您可以看到以下几行:

Collapsed Structure in Editor

这就是 JSON 的工作原理。每个对象只能拥有 key 一次,因此这里发生的所有事情是读取和解析的每个 block 只是一遍又一遍地替换元素,直到结束。

你应该拥有什么:

{
"show":[
{
"season":[
{
"questions":[
{ ... } // lots of questions entries
]
}, // <-- End element here
{ // <-- New element here
"questions": [
]
}
]
}
]
}

所以发生的情况是,您用来编写此列表的任何过程都明显存在错误,并且没有使用应有的字符串格式分离出对象。

要么更正编写此内容的来源,要么寻找处理和编辑文本内容的方法。

不是解析器的错误(任何语言的任何解析器都会发生同样的情况),而是数据的错误。

关于java - Mongo插入带有嵌套数组元素的json文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31826962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com