JSON.parse返回未定义的我的字符串

时间:2020-07-10 11:46:51

标签: javascript json reactjs jsx

我有一个从服务器返回的字符串,我想将其解析为一个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中访问男性,女性和品牌对象。

4 个答案:

答案 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)