在 Swift 中将 JSON 更改为字符串 [重复]
Posted
技术标签:
【中文标题】在 Swift 中将 JSON 更改为字符串 [重复]【英文标题】:change JSON to String in Swift [duplicate] 【发布时间】:2017-11-19 03:26:00 【问题描述】:我从 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 对象对我来说并不容易。任何提示或帮助将不胜感激。
【问题讨论】:
显示一些关于如何将其转换为字符串的代码。 通过使用String()
方法,我已经在上面更新了。
你为什么要首先将你的 JSON 转换为字符串?你不需要这样做。只需使用以下常用工具之一解码 JSON 数据:JSONSerialization、SwiftyJSON、JSON 解码器...
【参考方案1】:
斯威夫特 3,4:
给定的 JSON 格式是 Array
的 String
。
if let json = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [String]
let firstElement = json?.first ?? "Element Not Found!"
print(firstElement)
斯威夫特 4:
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
变量。即var urls = [String]()
斯威夫特 3,4:
if let json = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [String]
if json != nil
self.urls = json!
print(self.urls)
斯威夫特 4:
if let json = try? JSONDecoder().decode(Array<String>.self, from: data)
self.urls = json
【讨论】:
真正内容丰富的答案,我很感激!!!!非常感谢!!!!【参考方案2】: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)
【讨论】:
【参考方案3】:您要求使用以下内容创建 String
:
[
"https:\/\/seekingalpha.com\/article\/4125943-apple-homepod-delay-big-deal?source=feed_symbol_AAPL"
]
字符串对象完全按照您的指示进行操作 - 您要求它表示的内容以方括号开头,然后是换行符,然后是两个空格等,因此字符串包含方括号,然后是一个换行符,然后是两个空格,等等。没有'不必要的'\n
,只有你告诉它输入的\n
。
如果您获得了 JSON 对象,则需要将其解析为 JSON。 JSONSerialization
将完成这项工作。你实际上得到的是一个包含单个项目的数组,它是一个字符串。所以JSONSerialization
将返回一个数组。其中的第一项应该是作为 seekalpha.com URL 的字符串。
【讨论】:
知道了。非常感谢:)以上是关于在 Swift 中将 JSON 更改为字符串 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
在swift中将navigationBar底部边框更改为虚线
如何在 Xcode 中将 Swift 版本从 5 更改为 4?
在 Swift 中将 AVAudioPlayer 输出更改为扬声器?
如何在 Swift 4 中将 navigationItem.title 更改为白色?
如何在 Swift 中将 UIActivity 复制更改为复制 UIActivityViewController 中的链接