以JSON格式打印出MongoDB文档

时间:2017-09-15 23:42:08

标签: json swift mongodb mongokitten

我正从我的mongoDB数据库中检索文档,但我需要以JSON格式打印出来。我将所有相关信息存储在一个数组中,如MongoKitten文档所示。我想打印出数组中每个元素的全部内容,记住来自MongoDB的文档。我的代码如下:

import Foundation
import MongoKitten

let myDatabase = try MongoKitten.Database("mongodb://taylor:starwars1@ds129374.mlab.com:29374/taylorswiftengine")
let myCollection = myDatabase["my_collection"]


Request.addHandler(forMethod: "GET", withRoute: "/:resource/:id1")
{  


 (routeParams:RouteParams) in

     let myTopics = try! myCollection.find("topic" == "\(routeParams["id1"]!)")

     let allTopics = Array(myTopics)


}

2 个答案:

答案 0 :(得分:1)

MongoKitten附带一个扩展JSON模块,您可以导入:

import ExtendedJSON

您可以使用[Document]将文档数组(makeExtendedJSON())转换为扩展JSON:

myArrayOfDocuments.makeExtendedJSON()

这会返回Cheetah.Value。猎豹是OpenKittens JSON库。要获取JSON字符串,您可以使用serializedString()上的Cheetah.Value方法。

总结一下,使用它将您的BSON文档数组转换为JSON字符串:

myArrayOfDocuments.makeExtendedJSON().serializedString()

答案 1 :(得分:0)

如果您的myTopics对象是一个字典,您可以将其转换为json,如下所示:

let dict = ["key1": "B", "key2": "A", "key3": "C"]
let jsonData = try JSONSerialization.data(withJSONObject: dict, options: .prettyPrinted)

否则你可以手动将myTopics对象转换为[String:String]字典,而不是像上面那样将其转换为json,但我不确定这是否是处理mongodb对象的方法。