如何将Raw字典转换为JSON字符串?

时间:2018-08-07 06:43:17

标签: json swift dictionary

我有这种类型的字典:

{
    “event”: {
        “type”: “message_create”, “message_create”: {
            “target”: {
                “recipient_id”: “RECIPIENT_USER_ID”
            }, “message_data”: {
                “text”: “Hello World!”,
            }
        }
}

我想将此字典转换为JSON字符串格式,但无法执行。请任何人指导我。

这是直到发送邮件后我一直在尝试验证来自服务器的数据消息的身份的代码-

 func sendMessage(_ userInfo: String) {

        let requestURL = URL(string: "https://api.twitter.com/1.1/direct_messages/events/new.json")
        Alamofire.request(requestURL!, method: .post,
                          encoding: URLEncoding.default,
                          headers: getRequestHeader()).responseJSON { (response) in
                            print(response)

                            switch response.result {
                            case .success:
                                print("Validation Successful")
                            case .failure(let error):
                                print("FAILURE ERROR : \(error.localizedDescription)")
                                print("ERROR : \(error)")
                                if let data = response.data {
                                    print("Print Server Error: " + String(data: data, encoding: String.Encoding.utf8)!)
                                }
                            }

        }
    }

    // MARK: - Get Request Header
    func getRequestHeader() -> ([String: String]) {

        return ["authorization": "","CONSUMER_KEY":"",
                "CONSUMER_SECRET":"",
                "oauth_secret":"7W2Gx4KEjz7d164NPvJaOktzhaSPpV3VNjvyjpIqaDc02",
                "oauth_token":"2605063830-IffuOmn2tEajFXY6khbzmeMwNoUvGkQ8qrYonzw",
                "oauth_version":"1.0",
                "oauth_signature_method":"HMAC-SHA1",
                "Content-Type": "application/json"
        ]
    }

2 个答案:

答案 0 :(得分:1)

出于专注于获取json字符串(无需关心如何获取字典)的目的,我假设您的myDict是要转换为json字符串的字典:

let json = """
{
    "event": {
        "type": "message_create", "message_create": {
            "target": {
                "recipient_id": "RECIPIENT_USER_ID"
            },
            "message_data": {
                "text": "Hello World!"
            }
        }
    }
}
""".data(using: .utf8)

var myDict: [String: Any] = [: ]

do {
    if let dict = try JSONSerialization.jsonObject(with: json!, options: []) as? [String: Any] {
        myDict = dict
    }
} catch {
    print(error)
}

所以现在我们想将myDict转换为json字符串:

do {
    // converting `myDict` to Json Data, and then
    // getting our json as string from the `jsonData`:
    if let jsonData = try JSONSerialization.data(withJSONObject: myDict, options: []) as? Data,
       let jsonString = String(data: jsonData, encoding: .utf8) {
        print(jsonString)
    }
} catch {
    print(error)
}

jsonString现在正在寻找!您应该在日志上看到:

  

{“ event”:{“ type”:“ message_create”,“ message_create”:{“ target”:{“ recipient_id”:“ RECIPIENT_USER_ID”},“ message_data”:{“ text”:“ Hello   世界!“}}}}

这是完全有效的json。

答案 1 :(得分:-2)

public extension NSDictionary{

    public func toJSONString() -> String{
        if JSONSerialization.isValidJSONObject(self) {
            do{
                let data = try JSONSerialization.data(withJSONObject: self, options: JSONSerialization.WritingOptions(rawValue: 0))

                if let string = NSString(data: data, encoding: String.Encoding.utf8.rawValue) {
                    return string as String
                }
            }catch {
                print("error")
            }
        }
        return ""
    }
}