Мне нужно получить список всех полей имени из следующего json. Я пытаюсь сделать это, сопоставив DBObject.
JSON:
{
"firstOne": [
{
"file": "FileA",
"Data": "One",
"version": "0.4"
}
],
"secondOne": [
{
"elementName": "version",
"complexElement": "true",
"elementDataType": ""
}
],
"ThirdOne": [
{
"elementName": "version",
"explicitElements": [
{
"name": "mytag",
"type": "String",
"value": "myrequest"
},
{
"name": "booleantest",
"type": "Boolean",
"value": "true"
}
]
}
] }
КОД:
Коллекция DBCollection = mongoTemplate.getCollection("testTag");
Map<DBObject, DBObject> map = new HashMap<DBObject, DBObject>(); DBObject obj =null; BasicDBObject query = new BasicDBObject(); query.put("ThirdOne.explicitElements.name", "myTag"); BasicDBObject fields = new BasicDBObject(); fields.put("ThirdOne.explicitElements.name", 1); fields.put("ThirdOne.explicitElements.value", 1); DBCursor cursor2 = collection.find(query, fields); while
(cursor2.hasNext()) { obj = cursor2.next(); карта = obj.toMap();
for (Map.Entry<DBObject, DBObject> entry : map.entrySet()) { System.out.println("Key : " + entry.getKey() + " Value : " + entry.getValue()); } }
ПОЛУЧЕННЫЕ РЕЗУЛЬТАТЫ:
ключ: _id значение: 523f910681a9535f8af5aa91
Ключ: значение ThirdOne: [{"explicitElements" : [{"name":"mytag", "value":"myrequest"},{"name":"booleantest", "value":"true"}]}]
Я хотел бы получить только
ключ: "имя" значение: "mytag"
ключ: "значение" значение: "myrequest" и т.д...
Любые предложения о том, как это сделать с помощью DBObjects?