Maison >développement back-end >Tutoriel Python >Comment extraire les valeurs imbriquées d'une structure JSON complexe ?
Extraction des valeurs JSON imbriquées
Problème :
Lors de l'analyse des données JSON, vous pouvez rencontrer des structures complexes et imbriquées comme celle-ci :
<code class="json">{'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}</code>
Vous souhaitez extraire une valeur spécifique, comme le champ 'creationTime'.
Solution :
1. Naviguer dans la structure de données :
Pour extraire la valeur 'creationTime', nous devons parcourir la structure imbriquée à l'aide des clés :
<code class="python">my_dict['key1']['key2']['key3']</code>
2. Exemple de code :
Pour obtenir la valeur 'creationTime', utilisez le code suivant :
<code class="python">creation_time = my_dict['value']['queryInfo']['creationTime']</code>
3. Détermination du chemin d'accès aux données :
Pour déterminer le chemin d'accès à un élément de données spécifique, examinez la structure de la réponse JSON :
4. Approche plus générale :
Si vous rencontrez une structure JSON imbriquée inconnue, vous pouvez utiliser une fonction récursive pour naviguer et récupérer la valeur souhaitée :
<code class="python">def get_nested_value(data, path): if isinstance(data, dict): if path[0] in data: return get_nested_value(data[path[0]], path[1:]) else: return None # Raise an error if the key doesn't exist elif isinstance(data, list): if len(path) == 0: return data else: return get_nested_value(data[path[0]], path[1:]) else: return data value = get_nested_value(my_dict, ['value', 'queryInfo', 'creationTime'])</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!