如何在swift中解析json(将json字符串转换为字符串)

时间:2018-03-22 20:27:22

标签: ios json swift

我没有找到一种方法将一个简单的json对象解析为swift中的字符串对象。我有一个网络请求,它给了我这个json响应:

"\"asdf\""

当我尝试将其解析为swift中的字符串时,它看起来像这样:

"\"asdf\""

根据苹果的这份文件,我只需要这样做:

Apple Swift documentation

let jsonValue = responseData as? String

但这对我不起作用。

我只需要asdf作为字符串值。

任何人都可以帮助我吗?

提前致谢。

修改

这是我的网络请求代码:

let stringUrl = "https://test.fangkarte.de/v1.3/test"
    let url = URL(string: stringUrl)!
    let request = URLRequest(url: url)
    let session = URLSession(configuration: URLSessionConfiguration.default)
    let task = session.dataTask(with: request, completionHandler: {(data, response, error) -> Void in
        if let data = data {
            let json = String(data: data, encoding: String.Encoding.utf8)
            let response = response as! HTTPURLResponse
            if 200...299 ~= response.statusCode {
                callback(true, response.statusCode, json!)
            } else {
                callback(false, response.statusCode, json!)
            }
        }
    })
    task.resume()

变量json的值为"\"testString\""而不是"testString"

2 个答案:

答案 0 :(得分:1)

您可以尝试以下方式:

func parseJSON(_ data: Data) -> [String: Any]? {

    do {
        if let json = try JSONSerialization.jsonObject(with: data) as? [String: Any],
            let body = json["data"] as? [String: Any] {
            return body
        }
    } catch {
        print("Error deserializing JSON: \n\(error)")
        return nil
    }
    return nil
}

使用:

let data = <variable holding JSON>.data(using: .utf8)
let jsonResult = parseJSON(data)

答案 1 :(得分:0)

你得到一个json字符串,你可以尝试

  let jsonstring = "\"asdf\""
  let data = jsonstring.data(using: .utf8)

do {
     if let str = try JSONSerialization.jsonObject(with: data!, options:.allowFragments) as? String {
        print(str)
     }

   }
   catch let caught as NSError
   {
   }