Не знаю, почему я не могу получить доступ к ключам из строкового объекта. данные выглядят так Я получаю эти данные из переменной python
const data = '{regression: {success: 7310, total: 14154, failed: 4665, unstable: 2104, aborted: 75}, stable: {success: 2699, total: 4252, failed: 462, unstable: 15, aborted: 1076}, patch: {success: 2824, total: 5494, failed: 2518, unstable: 39, aborted: 113}}'
Мне нужно извлечь ключи регрессии, стабильной работы, исправления и, в конечном итоге, подробностей о том, сколько тестовых случаев было успешно, всего, неудачно и т. д.
Пытался изменить строку на объект с помощью JSON.parse(data)
, но выдает ошибку, так как это не объект.
Как я могу извлечь ключи и значение в этом случае
это исходит из переменной python. Мне нужно получить доступ к деталям, чтобы отобразить их в таблице.
Есть ли способ преобразовать это в объект или проанализировать данные для получения желаемых результатов?
Здесь работает JSON.parse: console.info(JSON.parse('{"a": {"b" : "c"}}'), "\ntype: ", typeof JSON.parse('{"a": {"b" : "c"}}'));
. И здесь выдает ошибку: console.info(JSON.parse('{a: {b : c}}'), "\ntype: ", typeof JSON.parse('{a: {b : c}}'));
.
да я в курсе этого. но это данные, которые я получаю. Есть ли обходной путь для получения желаемого результата
Да, исправьте свой код Python, чтобы отправить действительный JSON. Если вы используете json.dumps
, это произойдет автоматически».
Я знаю, что получу много ответов «eval is evil» на это, но если вы доверяете источнику своего вывода на Python, вы можете сделать let obj = eval('(' + data + ')')
, тогда вы можете вызывать свойства по своему желанию. obj.regression
и др.
Существует простой способ сделать эту работу.
В коде Python используйте метод json.dumps()
для преобразования словаря Python в допустимый JSON, как показано ниже.
import json
dictonary = {
"name": "Name",
"age": 0
};
print(json.dumps(dictionary)) # Returns JSON
Затем в свой JavaScript добавьте следующий код.
const data = "{\"name\": \"Name\", \"age\": 0}";
console.info(JSON.parse(data)); // Returns a JavaScript object
Теперь код JavaScript должен возвращать объект JavaScript без ошибок.
Это строка, а не объект. И это недействительный JSON, поэтому его нельзя проанализировать. Откуда это? Лучший способ — либо иметь объект, либо создать действительный JSON для анализа.