Неверный источник данных Google JSON?

Я реализую источник данных Google, используя их библиотеку Python. Мне бы хотелось, чтобы ответ из библиотеки можно было импортировать в другой скрипт Python с использованием библиотеки simplejson.

Однако даже их пример не проверяется в JSONLint:

{cols:
    [{id:'name',label:'Name',type:'string'},
     {id:'salary',label:'Salary',type:'number'},
     {id:'full_time',label:'Full Time Employee',type:'boolean'}],
rows:
    [{c:[{v:'Jim'},{v:800,f:'$800'},{v:false}]},
     {c:[{v:'Bob'},{v:7000,f:'$7,000'},{v:true}]},
     {c:[{v:'Mike'},{v:10000,f:'$10,000'},{v:true}]},
     {c:[{v:'Alice'},{v:12500,f:'$12,500'},{v:true}]}]}

Как настроить функцию simplejson 'load' для импорта вышеуказанного содержимого JSON? Я думаю, что основная проблема заключается в том, что ключи объекта не являются строками.

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

В настоящее время я получаю сообщение об ошибке "Ожидаемое имя свойства: строка 1, столбец 1 (символ 1)" при попытке импортировать вышеупомянутый JSON в Python с помощью simplejson.

Ответ 1

Он считается недопустимым JSON без строковых ключей.

{id:'name',label:'Name',type:'string'}

должен быть:

{'id':'name','label':'Name','type':'string'}

Согласно странице Google Data Source, они возвращают недействительный JSON. Они конкретно не говорят об этом, но на всех их примерах отсутствуют ключи на клавишах.

Вот достаточно полный список процессоров JSON для Python , в котором подробно рассказывается о том, какие форматы они поддерживают, и насколько хорошо. Большинство не поддерживают нестрочные ключи, , но кажется, что будет преобразовывать его.

easy_install demjson