tutorial descargar python json google-app-engine

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''}