首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Vapor 1.5中循环JSON对象并将其转换为[String:Any]?

如何在Vapor 1.5中循环JSON对象并将其转换为[String:Any]?
EN

Stack Overflow用户
提问于 2018-08-11 04:32:35
回答 3查看 84关注 0票数 1

我正在通过Alamofire向我的vapor 1.5服务器发送一个请求,其主体类型为String:Any,其中任何类型都是String:String的字典

当在服务器上收到请求时,我将其转换为JSON类型

代码语言:javascript
复制
 guard let reqJson = request.json else {return}

如何遍历这个JSON对象并将其转换为[String:Any]数组

我从客户端应用程序发送的请求正文如下所示:

代码语言:javascript
复制
 ["DHSKL3920JFLSKXFgs": 
   ["title": “some title”, 
    "body": “some body”, 
    "DHSKL3920JFLSKXFgs": "DHSKL3920JFLSKXFgs", 
    "unreadMessagesCount": 3], 

 "PKF993AVG59gkCM": 
   ["title": “some title”, 
    "body": “some body”,  
    "DHSKL39": "DHSKL39", 
     "unreadMessagesCount": 3]] 
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-08-11 06:14:06

代码语言:javascript
复制
struct DataFromClientSendNotifications {

 let title: String
 let body: String
 let sound: String
 let badge: String
 let fcmToken: String
 let unreadMessagesCount: String

}


    guard let reqJson = request.json else {
      throw Abort.custom(status: .badRequest, message: message)
    }

   for obj in reqJson.object! {

        print("new obj is \(obj)")
        let objKey = obj.key
        let objValue = obj.value.object

        print("objectValue here is \(objValue)")

        let title =  objValue?["title"]?.string
        let body = objValue?["body"]?.string
        let unreadMessagesCount = objValue?["unreadMessagesCount"]?.string
        let sound = objValue?["sound"]?.string
        let badge = objValue?["badge"]?.string
        let fcmToken = objValue?["objValue"]?.string

         let itemCompleted = DataFromClientSendNotifications(title: title!, body: body!, sound: sound!, badge: badge!, fcmToken: fcmToken!, unreadMessagesCount: unreadMessagesCount!)

        print("itemCompleted is \(itemCompleted)")
        //now you can do whatever you want with  itemCompleted

    }
票数 0
EN

Stack Overflow用户

发布于 2018-08-11 05:43:10

你可以使用swift4 Codable,并将你的代码缩减到4-5行。Documentation

票数 1
EN

Stack Overflow用户

发布于 2018-08-11 12:47:28

如果我没理解错的话。也许下面的内容会有所帮助。

代码语言:javascript
复制
//This method uses high order function map
func convert(json:[String:Any]) -> [[String: Any]] {
    let requiredObjects = json.map { $0.value as! [String:Any] } //force unwrapping
    return requiredObjects
}

//This method uses simple loop
func convert(json:[String:Any]) -> [[String: Any]] {
    var requiredObjects = [[String:Any]]()
    for (key, value) in json.enumerated() {
        requiredObjects.append([value.key : value.value])
    }
    return requiredObjects
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51793724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档