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 + "¶meterCd=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