Как разобрать строку в массив объектов?

#python #arrays #json

#python #массивы #json

Вопрос:

У меня есть приложение на python, которое отправляет странный массив объектов в мое приложение node js в строковом формате, например :

"[{'foo':'bar'},{'hello':'world'}]"

Я пытаюсь разобрать ее с JSON.parse() помощью, но получаю ошибки :

SyntaxError: Unexpected token ' in JSON at position 1

На стороне python массив распознается как настоящий список массивов, но когда я передаю его в nodejs с помощью оболочки python, это становится строковым массивом объектов.

Есть предложения по ее разбору?

Комментарии:

1. Исправьте свое приложение на Python, чтобы оно вместо этого отправляло правильный JSON

2. Я думаю, что в моем приложении на python нет ничего плохого, я использую собственный модуль json с json.loads и json.dumps перед отправкой моего json

3. Опубликованная вами строка не является допустимым JSON. Это помогло бы увидеть код Python, который сгенерировал этот ответ, и исправить любые проблемы там.

Ответ №1:

JSON.parse() не будет принимать одинарные кавычки в качестве границ строки. Эта строка с использованием двойных кавычек работает нормально:

 console.log(JSON.parse('[{"foo":"bar"},{"hello":"world"}]'));  

Если невозможно изменить приложение на Python, вы можете заменить одинарные кавычки на двойные кавычки перед синтаксическим анализом строки в формате JSON.

Ответ №2:

Как насчет использования json.load()?

 import json
inp = "[{'foo':'bar'},{'hello':'world'}]"

a = json.loads(inp.replace("'",'"'))

print(a)
  

Вывод (список словарей) :

 [{'foo': 'bar'}, {'hello': 'world'}]