在Swift中将JSON更改为String

时间:2017-11-19 03:26:01

标签: json swift

我从API获得了JSON文件,但内容如下:

[
  "https:\/\/seekingalpha.com\/article\/4125943-apple-homepod-delay-big-deal?source=feed_symbol_AAPL"
]

假设上面的JSON对象命名为json。然后我只使用String()方法将对象转换为字符串   strings = String(json)
当我将其更改为String类型时,其中似乎没有'\n'whitespace

"[\n  \"https:\\/\\/seekingalpha.com\\/article\\/4125943-apple-homepod-delay-big-deal?source=feed_symbol_AAPL\"\n]"

所以看起来JSON文件的内容是:

["\n""whitespace""whitespace""String""\n"]


当我将其更改为String类型时,Swift只会将其中的所有元素作为一个整体处理并将其包装为字符串。 我的问题是,如何在内部提取String,看起来像:

"https:\\/\\/seekingalpha.com\\/article\\/4125943-apple-homepod-delay-big-deal?source=feed_symbol_AAPL\"

由于我对Swift不太熟悉所以如何提取String或JSON对象对我来说并不容易。任何提示或帮助将不胜感激。

3 个答案:

答案 0 :(得分:0)

1. You will first have to convert JSON to Data
2. Convert data to string wrt to encoding    

    func jsonToString(jsonTOConvert: AnyObject){
        do {
            let data =  try JSONSerialization.data(withJSONObject: jsonTOConvert, options: JSONSerialization.WritingOptions.prettyPrinted) 
            let convertedString = String(data: data, encoding: String.Encoding.utf8) 
        } catch let myJSONError {
            print(myJSONError)
        }

}

答案 1 :(得分:0)

您要求使用内容创建String

[
  "https:\/\/seekingalpha.com\/article\/4125943-apple-homepod-delay-big-deal?source=feed_symbol_AAPL"
]

字符串对象完全按照你的说法进行操作 - 你要求它表示的东西以方括号开头,然后是换行符,然后是两个空格等,所以字符串包含一个方括号,然后换行,然后是两个空格等。没有“不必要的”\n,只有你告诉它放入的\n

如果您获得了JSON对象,则需要将其解析为JSON。 JSONSerialization将完成这项工作。你实际得到的是一个包含单个项目的数组,这是一个字符串。所以JSONSerialization将返回一个数组。第一项应该是一个字符串,即seekalpha.com网址。

答案 2 :(得分:0)

Swift 3,4:

给定的JSON格式为Array的{​​{1}}。

String

Swift 4:

if let json = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [String]{

        let firstElement = json?.first ?? "Element Not Found!"

        print(firstElement)
}

注意:  如果if let json = try? JSONDecoder().decode(Array<String>.self, from: data){ let firstElement = json.first ?? "First Element Not Found!" print(firstElement) } 包含多个Array。在此,Stringurls变量。即,class

Swift 3,4:

var urls = [String]()

Swift 4:

if let json = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [String]{

    if json != nil{

        self.urls = json!
    }

    print(self.urls)
}