Форматирование JSON объекта, От одинарных кавычек до двойных - PullRequest
0 голосов
/ 11 февраля 2020

Я использую предоставленный мне набор данных и пытаюсь проанализировать (используя узел) возвращенные мне объекты JSON,

Оказывается, все они используют одинарные кавычки, и из моего исследования JSON использует double.

Пример объекта JSON, который мне возвращают!

{
    'cast_id': 16,
    'character': 'Alexander Haig',
    'credit_id': '52fe43c59251416c7501d72d',
    'gender': 2,
    'id': 6280,
    'name': 'Powers Boothe',
    'order': 2,
    'profile_path': '/3nNL6AvMAYq0BmHKM79RnRZVq3i.jpg'
},

Я использовал str.replace() для рассортируйте объекты раньше JSON.parse(), что было хорошо, пока я не нашел подобные объекты

{
    'cast_id': 26,
    'character': '"Jack Jones"',
    'credit_id': '52fe43c59251416c7501d751',
    'gender': 2,
    'id': 6840,
    'name': 'Larry Hagman',
    'order': 16,
    'profile_path': '/40PVsGp5Wp5kbUhAefLHqjqbarc.jpg'
},

Обратите внимание на 'character': '"Jack Jones"', Это вызывает у меня все типы проблем!

Я там библиотека, которая поможет мне разобрать все это?

Я что-то упустил?

К вашему сведению:

Я не могу получить доступ к каждой записи, так как объекты JSON не отображаются. Вместо этого хранится отдельно, как длинная строка, включающая до 60 JSON объектов.

Screenshot of the dataset in the DB

В настоящее время у меня есть функция, которая помогает анализировать данные:

function formatJSON(cast) {
    cast = cast.replace(/(\w) "(\w)/g, "$1 *$2");
    cast = cast.replace(/(\w)" /g, "$1* ");         
    cast = cast.replace(/': '/g, '": "');
    cast = cast.replace(/', '/g, '", "' );
    cast = cast.replace(/'},/g, '"},');
    cast = cast.replace(/': /g, '": ');
    cast = cast.replace(/, '/g, ', "');
    cast = cast.replace(/{'/g, '{"');
    cast = cast.replace(/: None}/g, ': "None"}');
    cast = cast.replace(/'}/g, '"}');
    return cast;
}

Обновление

Данные как сообщается, извлекается в python как словарь, используя ast.literal_eval()

1 Ответ

0 голосов
/ 11 февраля 2020

По умолчанию вам не нужно заменять строку, заключенную в двойные кавычки, на ту же строку, содержащую одинарную кавычку. Нет никакой разницы между 'Jack Jones' и "Jack Jones", поскольку все они string.

В вашем случае вы пытаетесь заменить что-то вроде этого примера:

var str = '\'Jack Jones\''.replace(/'/g, '"');

console.log('\'' + str + '\'');

Итак, если вы хотите заключить все имена и значения свойств в двойные кавычки, вы можете использовать JSON.stringify и JSON.parse следующим образом:

var cast = {
    'cast_id': 16,
    'character': 'Alexander Haig',
    'credit_id': '52fe43c59251416c7501d72d',
    'gender': 2,
    'id': 6280,
    'name': 'Powers Boothe',
    'order': 2,
    'profile_path': '/3nNL6AvMAYq0BmHKM79RnRZVq3i.jpg'
};

cast = JSON.stringify(cast);
cast = JSON.parse(cast);

console.log(cast);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...