簡體   English   中英

JSON.parse 在我的字符串上返回 undefined

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM