我从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对象对我来说并不容易。任何提示或帮助将不胜感激。
答案 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
。在此,String
是urls
变量。即,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)
}