在 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 格式是 ArrayString

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。这里,urlsclass 变量。即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 中的链接

如何在Swift中将UITextField键盘类型更改为电子邮件