Я согласен с вами, что обычно json.loads()
будет первым выбором для принятия этого. Откуда взялась эта строка?
правильное решение
Похоже, что layer_1 некоторого фрагмента кода произвел правильно сформированный JSON,
а затем layer_2 вычеркнул кавычки.
Найдите layer_2 и скажите, чтобы он прекратил это делать.
Или скопируйте layer_2,
ваш собственный код потребляет исходные данные
и лучше обрабатывать его,
чтобы цитаты не потерялись.
хакерский раствор
Там, конечно, есть какая-то структура, остающаяся там,
между пунктуацией и окончанием строки,
так что в худшем случае стоило бы взломать UnStrip
рутина, которая возвращает недостающие кавычки.
В случае, например, b=123
, было бы не так плохо излучать 'b':'123'
,
как вы всегда можете опубликовать процесс,
где вы рекурсивно пытаетесь преобразовать значения словаря в числа,
try
/ except
, чтобы игнорировать ошибку, если получится значение
больше похоже на 'xyz'
, чем на целое число.
На самом деле, пример упаковки n = float(s)
в try
поучителен.
Там может быть некоторая двусмысленность в любой данной строке ввода,
с возможностью попробовать вариант A или B в качестве допустимого JSON.
Может быть полезно попробовать оба варианта, завернутые в try
,
и верни первое, что победит,
первый, который оценивает как действительный JSON.