提问人:Ryan H 提问时间:10/20/2023 最后编辑:Ryan H 更新时间:10/20/2023 访问量:25
无法动态地将 JSON 值括在引号中 Swift
Unable to enclose JSON values in quotes dynamically Swift
问:
我在 Swift 的 JSON 字符串中用引号将变量值封闭在键中非常困难。 我有一个键,里面有一两个值,这取决于一些不相关的逻辑。如果我对 JSON 字符串中的值进行硬编码,如下所示;
let jsonMessage: [String: Any] = [
...
"options": [
"Option1", "Option2"
]
...
一切正常,这就是我需要的方式。问题在于,有时我只需要使用一个或另一个值,而不是同时使用这两个值,所以我需要构建值。(甚至是整个键值对)
我以为我可以通过做这样的事情来做到这一点:
let option1var = "Option1"
let option2var = "Option2"
"options": [
"\"\(option1var)\"","\"\(option2var)\""
]
但这并不能转义反斜杠转义字符和输出为;
"options": [
"\Option1\","\"Option2\"
]
如果我尝试不使用转义字符,但不能,因为逗号会破坏字符串,则输出如下;
"options": [
option1var,option2var //String breaks at comma
]
这不好,因为我需要用引号括起来的值
我还尝试将键创建为相同类型的 Dictionary [String: Any] 并像这样插入整个值;
options = ["options": "\"Option1\",\"Option2\""]
但后来它告诉我它正在寻找一个字符串值而不是字典值。
我尝试了许多其他变体,但由于引号的原因,我要么无法将整个值括在字符串中,要么如果我使用转义字符,它们只会出现在字符串中。
我担心我只是看不到树木的森林,并且错过了一些明显的东西,但我就是无法弄清楚它是什么,任何帮助将不胜感激。
又尝试了一次失败的尝试,如下所示;
options = option1var + "," + option2var
出来了;
"options": "Option1,Option2" //Need entries separated and enclosed
答:
您需要一个包含两个字符串的 JSON 数组,“Option1” 和 “Option2”,因此自然而然地,您应该创建一个包含这两个字符串的 Swift 数组,它们存储在 和 中。那是:option1var
option2var
[option1var, option2var]
请注意,引号不是要编码的字符串的一部分。在 JSON 中看到它们只是因为它们是 JSON 语法的一部分。JSON 编码器将负责添加这些引号。你不应该在你的Swift代码中添加它们,即这是不正确的:
["\"\(option1var)\"","\"\(option2var)\""]
这是一个包含以引号开头和结尾的字符串的数组。
评论
"options": [option1var, option2var]
Codable