TypeScript中能否遍历含\n和`字符的JSON对象?如何清理冗余字符?
如何处理带转义字符与换行的JSON字符串并遍历?
嘿,这个问题我熟!当然能遍历这个JSON对象,但你现在手里的其实是被转义字符和换行符包裹的字符串形式"伪JSON",不是直接可操作的JSON对象,这才是遍历失败的根源。下面一步步教你怎么处理:
第一步:清理冗余字符,得到标准JSON字符串
你的原始内容带转义双引号(\")、换行符,还有多余的尾逗号,得先把这些干扰项清理掉:
- 把所有
\"替换成",移除转义标记 - 删除末尾键值对后的多余逗号(JSON语法不允许最后一个键值对后加逗号,否则解析会报错)
- 可选:移除换行符(换行符不影响解析,但清理后更整洁)
举个例子,你的原始字符串:
"{ \"Foo\" : \"1234\", }"
清理后会变成标准JSON字符串:
{ "Foo" : "1234" }
第二步:解析成可操作的JSON对象,然后遍历
根据你使用的编程语言,用对应的JSON解析工具把清理后的字符串转换成对象,之后就能正常遍历了。这里给两个常见语言的示例:
JavaScript 示例
// 原始带转义的字符串 const rawJsonStr = "{\\n \\\"Foo\\\" : \\\"1234\\\",\\n}"; // 清理冗余字符 const cleanedStr = rawJsonStr .replace(/\\"/g, '"') // 替换转义双引号 .replace(/,\s*}/, '}') // 移除尾逗号 .replace(/\\n/g, ''); // 移除转义换行 // 解析成JSON对象 const jsonObj = JSON.parse(cleanedStr); // 开始遍历 for (const [key, value] of Object.entries(jsonObj)) { console.log(`键:${key},值:${value}`); // 输出:键:Foo,值:1234 }
Python 示例
import json # 原始带转义的字符串(如果是从外部获取的,可能会带转义反斜杠) raw_json_str = '"{\n \\"Foo\\" : \\"1234\\",\n}"' # 先去掉外层的引号,再清理冗余字符 cleaned_str = raw_json_str.strip('"')\ .replace(',\n}', '\n}')\ .replace('\\"', '"') # 解析成字典(Python中JSON对象对应字典) json_obj = json.loads(cleaned_str) # 遍历键值对 for key, value in json_obj.items(): print(f"键:{key},值:{value}") # 输出:键:Foo,值:1234
关键提醒
你之前遍历失败,本质是把字符串当成了JSON对象来操作——字符串本身没有键值对结构,只有解析成对应语言的对象(比如JS的Object、Python的dict)后,才能进行遍历、取值等操作。
内容的提问来源于stack exchange,提问作者Sakshi
相关产品推荐
相关产品推荐

