【问题标题】:Convert a simple string to JSON String in swift快速将简单字符串转换为 JSON 字符串
【发布时间】:2016-07-29 10:01:46
【问题描述】:

我知道有一个同名的问题here。但在那个问题中,他试图将字典转换为 JSON。但我有一个像这样的简单刺痛: “花园”

我必须将它作为 JSON 发送。我已经尝试过 SwiftyJSON,但仍然无法将其转换为 JSON。

这是我的代码:

func jsonStringFromString(str:NSString)->NSString{

    let strData = str.dataUsingEncoding(NSUTF8StringEncoding)
    let json = JSON(data: strData!)
    let jsonString = json.string

    return jsonString!
}

我的代码在最后一行崩溃了:

fatal error: unexpectedly found nil while unwrapping an Optional value

我做错了吗?

【问题讨论】:

    标签: json swift swifty-json


    【解决方案1】:

    JSON has to be an array or a dictionary,不能只是一个字符串。

    我建议你创建一个包含字符串的数组:

    let array = ["garden"]
    

    然后你从这个数组创建一个 JSON 对象:

    if let json = try? NSJSONSerialization.dataWithJSONObject(array, options: []) {
        // here `json` is your JSON data
    }
    

    如果你需要这个 JSON 作为字符串而不是数据,你可以使用这个:

    if let json = try? NSJSONSerialization.dataWithJSONObject(array, options: []) {
        // here `json` is your JSON data, an array containing the String
        // if you need a JSON string instead of data, then do this:
        if let content = String(data: json, encoding: NSUTF8StringEncoding) {
            // here `content` is the JSON data decoded as a String
            print(content)
        }
    }
    

    打印:

    [“花园”]

    如果您更喜欢字典而不是数组,请遵循相同的想法:创建字典然后转换它。

    let dict = ["location": "garden"]
    
    if let json = try? NSJSONSerialization.dataWithJSONObject(dict, options: []) {
        if let content = String(data: json, encoding: NSUTF8StringEncoding) {
            // here `content` is the JSON dictionary containing the String
            print(content)
        }
    }
    

    打印:

    {"位置":"花园"}

    【讨论】:

      【解决方案2】:

      Swift 3 版本:

          let location = ["location"]
          if let json = try? JSONSerialization.data(withJSONObject: location, options: []) {
              if let content = String(data: json, encoding: .utf8) {
                  print(content)
              }
          }
      

      【讨论】:

        猜你喜欢
        • 2018-10-16
        • 1970-01-01
        • 2015-04-04
        • 2015-06-19
        • 2020-01-13
        • 2015-04-09
        • 1970-01-01
        • 2017-10-18
        • 1970-01-01
        相关资源
        最近更新 更多