texto salto print pedir metodos linea leer impresion formato entrada end como cadenas python json

python - salto - ¿Cómo extraer un solo valor de la respuesta JSON?



metodos de entrada python (3)

Extraer valor único de la respuesta JSON Python

Prueba esto

import json import sys #load the data into an element data={"test1" : "1", "test2" : "2", "test3" : "3"} #dumps the json object into an element json_str = json.dumps(data) #load the json to a string resp = json.loads(json_str) #print the resp print (resp) #extract an element in the response print (resp[''test1''])

En primer lugar, admitiré libremente que soy poco más que un torpe hombre de artes liberales que es completamente autodidacta en este asunto de los scripts. Dicho esto, estoy intentando obtener valores del Servicio de Datos del Agua de USGS utilizando el siguiente código:

def main(gaugeId): # import modules import urllib2, json # create string url = "http://waterservices.usgs.gov/nwis/iv/?format=json&sites=" + gaugeId + "&parameterCd=00060,00065" # open connection to url urlFile = urllib2.urlopen(url) # load into local JSON list jsonList = json.load(urlFile) # extract and return # how to get cfs, ft, and zulu time? return [cfs, ft, time]

Aunque he encontrado algunos tutoriales sobre cómo extraer los valores deseados de una respuesta JSON, la mayoría son bastante simples. La dificultad que tengo es extraer de lo que parece ser una respuesta muy complicada que este servicio está devolviendo. Mirando la respuesta, puedo ver que lo que quiero es el valor de dos secciones diferentes y un valor de tiempo. Por lo tanto, puedo ver la respuesta y ver lo que necesito, simplemente no puedo, por mi vida, averiguar cómo obtener estos valores extraídos.


La única sugerencia es acceder a su resp_dict través de .get() para un enfoque más elegante que se degradará bien si los datos no son los esperados.

resp_dict = json.loads(resp_str) resp_dict.get(''name'') # will return None if ''name'' doesn''t exist

También puede agregar algo de lógica para probar la clave si así lo desea.

if ''name'' in resp_dict: resp_dict[''name''] else: # do something else here.


el uso de json.loads convertirá sus datos en un dictionary Python.

Se accede a los valores de los diccionarios usando [''key'']

resp_str = { "name" : "ns1:timeSeriesResponseType", "declaredType" : "org.cuahsi.waterml.TimeSeriesResponseType", "scope" : "javax.xml.bind.JAXBElement$GlobalScope", "value" : { "queryInfo" : { "creationTime" : 1349724919000, "queryURL" : "http://waterservices.usgs.gov/nwis/iv/", "criteria" : { "locationParam" : "[ALL:103232434]", "variableParam" : "[00060, 00065]" }, "note" : [ { "value" : "[ALL:103232434]", "title" : "filter:sites" }, { "value" : "[mode=LATEST, modifiedSince=null]", "title" : "filter:timeRange" }, { "value" : "sdas01", "title" : "server" } ] } }, "nil" : false, "globalScope" : true, "typeSubstituted" : false }

se traduciría en una dicción python

resp_dict = json.loads(resp_str) resp_dict[''name''] # "ns1:timeSeriesResponseType" resp_dict[''value''][''queryInfo''][''creationTime''] # 1349724919000