如何将socials字符串响应转为目标对象格式,JSON.parse无效怎么办
问题原因
你调用JSON.parse失败是因为接口返回的socials字段值是自定义的逗号分隔键值对字符串,不符合标准JSON格式,无法直接解析,手动拆分处理即可完成转换。
实现代码(JavaScript 示例)
// 接口返回的原始socials字符串 const originSocialStr = "Whatsapp_phone: 3413536723,Instagram: agusmac1,Linkedin: agusmac,Facebook: agusmac40"; const socials = {}; originSocialStr.split(',').forEach(item => { // 按冒号分割为键和值,仅分割一次避免值本身带冒号的异常 let [key, value] = item.split(':', 2).map(i => i.trim()); // 替换键名:把Whatsapp_phone改为Whatsapp if (key === 'Whatsapp_phone') key = 'Whatsapp'; // 适配你示例中Facebook值替换逻辑,不需要可以删掉这行 if (key === 'Facebook') value = 'agusmac20'; // 手机号按需转数字类型,不需要转的话直接赋值value即可 socials[key] = isNaN(Number(value)) ? value : Number(value); }) console.log(socials); /* 输出结果和你要求的格式完全一致: { Whatsapp: 3413536723, Instagram: 'agusmac1', Linkedin: 'agusmac', Facebook: 'agusmac20' } */
补充说明
- 如果后续有其他键名需要修改,直接在键名判断分支里加对应规则即可
- 如果不需要修改Facebook的原值,删掉对应值替换的代码行即可
- 如果需要保留手机号为字符串格式,直接赋值
socials[key] = value即可,不需要做数字转换判断
内容的提问来源于stack exchange,提问作者Agus Mac Rae
相关产品推荐
相关产品推荐

