[英]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.