【问题标题】:Printing out MongoDB Documents in JSON Format以 JSON 格式打印出 MongoDB 文档
【发布时间】:2017-09-15 23:42:07
【问题描述】:

我正在从我的 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)


}

【问题讨论】:

    标签: json swift mongodb mongokitten


    【解决方案1】:

    MongoKitten 带有一个扩展的 JSON 模块,您可以将其导入:

    import ExtendedJSON
    

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

    myArrayOfDocuments.makeExtendedJSON()

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


    总而言之,使用它来将 BSON 文档数组转换为 JSON 字符串:

    myArrayOfDocuments.makeExtendedJSON().serializedString()
    

    【讨论】:

      【解决方案2】:

      如果你的 myTopics 对象是一个字典,你可以像这样将它转换为 json:

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

      否则,您可以手动将 myTopics 对象转换为 [String:String] 字典,然后将其转换为 json ,但我不确定这是否是处理 mongodb 对象的方式。

      【讨论】:

      • 我的数据如下所示:[{"_id":"A3D813E8-B16E-4D55-BF94-101B3D0BD6EF","message":"I love Charzard","email":"taylor.mail@email.com","topic":"pokemon"}, {"_id":"D6926E07-7797-41DC-849B-3854543931E0","message":"I love eggs","email":"jobr.mail@email.com","topic":"pokemon"}, {"_id":"0EF27D36-58B3-4AB8-917C-F9955BA75120","message":"I love Pikachu","email":"jobr.mail@email.com","topic":"pokemon"}, {"_id":"6DB65277-E806-43C1-997D-69A21A0E3B4F","message":"I love Gastly","email":"jobr.mail@email.com","topic":"pokemon"}]
      猜你喜欢
      • 2013-08-08
      • 1970-01-01
      • 1970-01-01
      • 2020-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多