我有一个从服务器返回的字符串,我想将其解析为一个JSON对象,以下是该字符串以及我在做什么:
stringToParse = "\"{'female': 16, 'brand': 75, 'male': 8}\""
dataJson = JSON.parse(stringToParse)
console.log(dataJson)
console.log(dataJson.male)
我得到这个作为输出:
{'female': 16, 'brand': 75, 'male': 8}
undefined
所以我无法在JSON中访问男性,女性和品牌对象。
答案 0 :(得分:2)
您的字符串有问题,我认为那些多余的引号是没有用的。您为他提供字符串“ {{female”:16,“ brand”:75,“ male”:8}”的JSON解析器,并将其解析为字符串,因此您可以看到console.log结果{{1}但这不是对象,整个事情都是一个字符串。删除多余的引号,它将认为它是一个对象。
{"female": 16, "brand": 75, "male": 8}
答案 1 :(得分:2)
要解析的正确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, '"'))
答案 2 :(得分:1)
您的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)
答案 3 :(得分:0)
在第二行中这样解析
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)