JSON .parse возвращает undefined в моей строке - PullRequest
0 голосов
/ 10 июля 2020

У меня есть строка, возвращенная с моего сервера, и я хочу преобразовать ее в объект JSON, следующая строка и то, что я делаю:

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.

Ответы [ 4 ]

2 голосов
/ 10 июля 2020

правильный 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 голосов
/ 10 июля 2020

Что-то не так с вашей строкой. Я думаю, что лишние кавычки бесполезны. JSON синтаксический анализатор вещей, который вы предоставляете ему строкой "{" female ": 16," brand ": 75," male ": 8}", анализирует ее как строку, так что вы видите результат console.log {"female": 16, "brand": 75, "male": 8} но это не объект, а целая строка. Удалите лишние кавычки, и он будет думать, что это объект.

stringToParse = '{"female": 16, "brand": 75, "male": 8}'
dataJson = JSON.parse(stringToParse)
console.log(dataJson)
console.log(dataJson.male)
1 голос
/ 10 июля 2020

Ваша строка 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)
0 голосов
/ 10 июля 2020

В синтаксическом анализе второй строки, как это

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...