[英]JSON.parse returning undefined on my string
我有一个从我的服务器返回的字符串,我想将它解析为 JSON object,以下是字符串和我在做什么:
stringToParse = "\"{'female': 16, 'brand': 75, 'male': 8}\""
dataJson = JSON.parse(stringToParse)
console.log(dataJson)
console.log(dataJson.male)
我得到的是 output:
{'female': 16, 'brand': 75, 'male': 8}
undefined
所以我无法访问 JSON 中的男性、女性和品牌对象。
你的字符串有问题我认为那些额外的引号没用。 JSON 解析器向他提供字符串 "{"female": 16, "brand": 75, "male": 8}" 并将其解析为字符串,因此您会看到 console.log 结果{"female": 16, "brand": 75, "male": 8}
但它不是一个对象,整个东西都是一个字符串。 去掉多余的引号,它会认为它是一个 object。
stringToParse = '{"female": 16, "brand": 75, "male": 8}' dataJson = JSON.parse(stringToParse) console.log(dataJson) console.log(dataJson.male)
要解析的正确 json 应该是
stringToParse = '{"female": 16, "brand": 75, "male": 8}'
您需要更改服务器上的代码以这种方式返回数据,或者在您的 js 文件中处理它。
此代码有效
let stringToParse = '{"female": 16, "brand": 75, "male": 8}'
dataJson = JSON.parse(stringToParse)
console.log(dataJson)
console.log(dataJson.male)
但是,如果您无法更改原始stringToParse
,请尝试此操作以便在 js 中解析它
let stringToParse = "\"{'female': 16, 'brand': 75, 'male': 8}\""
JSON.parse(stringToParse.replace(/\"/g, '').replace(/'/g, '"'))
您的 json 字符串格式无效。 在 JSON 中,键必须是用双引号而不是单引号编写的字符串。 例如{“男性”:16}。 尝试阅读此https://www.w3schools.com/js/js_json_syntax.asp 。 所以下面是正确答案:
stringToParse = '{"female": 16, "brand": 75, "male": 8}'
dataJson = JSON.parse(stringToParse)
console.log(dataJson)
console.log(dataJson.male)
在你的第二行解析这样
stringToParse = "\"{'female': 16, 'brand': 75, 'male': 8}\""
dataJson = JSON.parse(stringToParse.replace(/\"/g, '').replace(/'/g, '"'))
stringToParse = "\"{'female': 16, 'brand': 75, 'male': 8}\"" dataJson = JSON.parse(stringToParse.replace(/\"/g, '').replace(/'/g, '"')) console.log(dataJson) console.log(dataJson.male)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.