python - descargar - influxdb tutorial
¿Cómo analizar un JSON algo incorrecto con Python? (4)
Tengo una siguiente cadena JSON procedente de una fuente de entrada externa:
{value: "82363549923gnyh49c9djl239pjm01223", id: 17893}
Esta es una cadena JSON con formato incorrecto ("id" y "value" deben estar entre comillas), pero necesito analizarlo de todos modos. He probado simplejson y json-py y parece que no se pudieron configurar para analizar esas cadenas.
Estoy ejecutando Python 2.5 en el motor de la aplicación de Google, por lo que cualquier solución basada en C como python-cjson no es aplicable.
El formato de entrada podría cambiarse a XML o YAML, además del JSON mencionado anteriormente, pero estoy usando JSON dentro del proyecto y cambiar el formato en un lugar específico no sería muy bueno.
Ahora cambié a XML y analicé los datos con éxito, pero esperaba cualquier solución que me permitiera volver a JSON.
Podría usar un analizador de cadenas para arreglarlo primero, una expresión regular podría hacerlo siempre que sea tan complicado como el JSON.
Puedes usar demjson .
>>> import demjson
>>> demjson.decode(''{foo:3}'')
{u''foo'': 3}
Pyparsing incluye un ejemplo de analizador JSON, aquí está la fuente en línea . Puede modificar la definición de memberDef para permitir una cadena que no esté entre comillas para el nombre del miembro, y luego puede usar esto para analizar su texto original no JSON.
Esta página también contiene información y un enlace a mi artículo en la edición de agosto de 2008 de Python Magazine, que contiene mucha más información detallada sobre este analizador. La página muestra algunos JSON de muestra y código que accede a los resultados analizados como si se tratara de un objeto deserializado.
ya que YAML (> = 1.2) es un superconjunto de JSON, puede hacer:
>>> import yaml
>>> s = ''{value: "82363549923gnyh49c9djl239pjm01223", id: 17893}''
>>> yaml.load(s)
{''id'': 17893, ''value'': ''82363549923gnyh49c9djl239pjm01223''}