gpt4 book ai didi

arrays - 如何快速解析字符串数组?

转载 作者:行者123 更新时间:2023-11-28 12:11:32 28 4
gpt4 key购买 nike

我正在编写一个简单的全栈应用程序,我从后端返回的结果在某些情况下就像下面的字符串数组:

["one","two","three"]

我现在遇到的问题是无法像通常的 JSON 数据那样快速解析此返回值。我搜索但一无所获。我想做的是:

让 json = 试试 JSONSerialization.jsonObject(with: data!, options: [.mutableContainers, .allowFragments]) 作为? [字符串]

不幸的是,这根本不起作用我怎样才能像普通数组一样解析它?

提前致谢。

更新:我在下面添加了一些更相关的代码:

let task = URLSession.shared.dataTask(with: request as URLRequest){
data, response, error in {
do {
let json = try JSONSerialization.jsonObject(with: data!, options: [.mutableContainers, .allowFragments]) as? [String]
print(json)
}catch{
print(error)
}
}
datatask.resume()

我在控制台中得到的错误是“Error Domain=NSCocoaErrorDomain Code=3840 “Invalid value around character 0.”UserInfo={NSDebugDescription=Invalid value around character 0.}”

谢谢大家。

最佳答案

如果您收到 3840 错误,则 JSON 不是有效的 JSON,句点。

数组的 JSON 字符串应该是

let jsonString = "[\"one\",\"two\",\"three\"]"

Swift 4 文字多行语法显示没有转义反斜杠的实际格式

let jsonString = """
["one","two","three"]
"""

您可以在没有任何选项的情况下解析它(没有 .allowFragments,并且没有 .mutableContainers)

let data = Data(jsonString.utf8)
do {
let array = try JSONSerialization.jsonObject(with: data) as! [String]
print(array) // ["one", "two", "three"]
} catch {
print(error)
}

几乎每个人都误用了 JSONSerialization 阅读选项

  • .allowFragments 仅在根对象不是数组且不是字典
  • 时才需要
  • .mutableContainers 在 Swift 中完全没有意义

在 99% 的情况下你可以省略 options 参数

关于arrays - 如何快速解析字符串数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48359483/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com