Swift中如何解析字符串数量未知的JSON字符串数组
动态键名不确定结构JSON解析方法
这类动态生成键名、字段数量不固定的JSON,不需要提前枚举所有可能的键名,核心思路是先解析固定结构,再遍历动态键取值,具体操作如下:
通用处理流程
- 先按静态解析的方式处理固定存在的键:首先解析外层结构,拿到
index数组中的目标对象,固定键numberOfString可以直接读取,用来校验后续拿到的动态字符串数量是否匹配 - 遍历目标对象的所有键值对,跳过固定的
numberOfString字段,其余符合stringX命名规则的键直接取值即可,不需要提前知道N的具体数值 - 如果需要保证字符串顺序和序号一致,可以提取键名中
string后的数字,按数字排序后整理结果
常见语言实现示例
JavaScript
const data = JSON.parse(rawJsonStr); const target = data.index[0]; const res = []; for (const key in target) { if (Object.hasOwn(target, key) && key.startsWith('string')) { const order = Number(key.slice(6)); // 截取string后的数字 res[order - 1] = target[key]; } } // res就是按string1到stringN顺序排列的结果数组
Python
import json data = json.loads(raw_json_str) target = data["index"][0] res = [None] * int(target["numberOfString"]) for key, val in target.items(): if key.startswith("string"): order = int(key[6:]) res[order - 1] = val # res为按序排列的所有字符串结果
提示:你给出的示例JSON存在语法错误,
"numberOfString":"N"行末尾缺少逗号,解析前需要先修正JSON格式,否则会触发解析报错。
内容的提问来源于stack exchange,提问作者Emanuele Mele
相关产品推荐
相关产品推荐

