J'essaye de minimiser les données que j'aurais envoyées à une application depuis une API mais certaines valeurs sont nulles mais peut être trouvé dans une autre API, j'ai donc pensé à faire tourner un script python sur un serveur pour ajouter ces résultats NULL au fichier JSON d'origine. J'ajoute la liste qui a cette information stockée à la liste qui le correspond dans le fichier JSON d'origine, ceci peut être fait en utilisant un identifiant unique qui correspond à un titre de jeu vidéo dans ces deux fichiers. Voici mon code:Vérifie si une valeur dans un objet JSON de 2 fichiers JSON différents est similaire et crée une liste de résultats correspondants avec python
import json
games = open('outputgames.json')
releases = open('outputreleases.json')
games_json = json.load(games)
releases_json = json.load(releases)
# This is where all the results are found in the JSON file
# The results are all stored in a list, so to access the first result
# we would access it like this: games_json['results'][0] or games_data[0]
games_data = games_json['results']
releases_data = releases_json['results]
#This is where, i iterate through the data to see IF the id in the object 'game' which is found in releases_data
#is similar to the one in games_data and then storing both matching results in a Dictionary and a list
#then i just dump the results to a json file.
grouped_data = [dict(data_releases = x, data_games= i) for x in releases_data for i in games_data if i['id'] == x['game']['id']]
with open('final_results.json', mode = 'w') as f:
json.dump(grouped_data, f)
La liste initiale games_data [ « résultats »] détient environ 480 résultats alors que celui releases_data [ « résultats »] détient 470. Mais pour une raison quelconque, mon code semble sauter par certains résultats, je suis censé recevoir environ 480 résultats, mais je reçois seulement environ 260 résultats. Je devine l'itération que je fais avec la déclaration "IF" ici saute quelques identifiants qu'il a déjà passés, mais je ne suis pas sûr. Si quelqu'un peut m'aider à faire la déclaration IF ne pas reprendre d'où il est parti mais à partir du haut et en fait vérifier si tous les identifiants correspondent.
Si quelqu'un peut m'aider s'il vous plaît avec ce problème que j'ai, ou si je fais quelque chose de mal. Toute aide est belle, merci d'avance.
Voici un exemple de ce que Grouped_data retournerait, ceci est seulement 1 entrée. il retourne environ 260 lorsqu'il est exécuté avec les fichiers JSON, mais comme je l'ai dit je suis déjà censé obtenir des centaines d'autres sont revenus:
[{"data_games": {"deck": "Tri Force Heroes is a co-op game set in The Legend of Zelda franchise. Three Links must work together to rid the land of Hyrule of evil once more.", "image": {"tiny_url": "http://static.giantbomb.com/uploads/square_mini/8/82063/2778000-tloztfh.jpg", "medium_url": "http://static.giantbomb.com/uploads/scale_medium/8/82063/2778000-tloztfh.jpg", "thumb_url": "http://static.giantbomb.com/uploads/scale_avatar/8/82063/2778000-tloztfh.jpg", "small_url": "http://static.giantbomb.com/uploads/scale_small/8/82063/2778000-tloztfh.jpg", "screen_url": "http://static.giantbomb.com/uploads/screen_medium/8/82063/2778000-tloztfh.jpg", "icon_url": "http://static.giantbomb.com/uploads/square_avatar/8/82063/2778000-tloztfh.jpg", "super_url": "http://static.giantbomb.com/uploads/scale_large/8/82063/2778000-tloztfh.jpg"}, "id": 49994}, "data_releases": {"deck": null, "image": null, "platform": {"api_detail_url": "http://www.giantbomb.com/api/platform/3045-138/", "id": 138, "name": "Nintendo 3DS eShop"}, "expected_release_day": 23, "expected_release_month": 10, "game": {"api_detail_url": "http://www.giantbomb.com/api/game/3030-49994/", "id": 49994, "name": "The Legend of Zelda: Tri Force Heroes"}, "expected_release_year": 2015, "id": 142927, "region": {"api_detail_url": "http://www.giantbomb.com/api/region/3075-1/", "id": 1, "name": "United States"}, "expected_release_quarter": null, "name": "The Legend of Zelda: Tri Force Heroes"}}]<
Voici un exemple de « releases_data » et « games_data » qui n'a pas été retourné dans la résultat mais fait en fait les ID de match:
releases_data:
{"deck":null,"game":{"api_detail_url":"http:\/\/www.giantbomb.com\/api\/game\/3030-50627\/","id":50627,"name":"Orion Trail"},"id":144188,"image":null,"name":"Orion Trail","platform":{"api_detail_url":"http:\/\/www.giantbomb.com\/api\/platform\/3045-94\/","id":94,"name":"PC"}}
games_data:
{"deck":"Orion Trail is a single player choose-your-own-space-adventure.","id":50627,"image":{"icon_url":"http:\/\/static.giantbomb.com\/uploads\/square_avatar\/29\/291401\/2775039-6490638002-heade.jpg","medium_url":"http:\/\/static.giantbomb.com\/uploads\/scale_medium\/29\/291401\/2775039-6490638002-heade.jpg","screen_url":"http:\/\/static.giantbomb.com\/uploads\/screen_medium\/29\/291401\/2775039-6490638002-heade.jpg","small_url":"http:\/\/static.giantbomb.com\/uploads\/scale_small\/29\/291401\/2775039-6490638002-heade.jpg","super_url":"http:\/\/static.giantbomb.com\/uploads\/scale_large\/29\/291401\/2775039-6490638002-heade.jpg","thumb_url":"http:\/\/static.giantbomb.com\/uploads\/scale_avatar\/29\/291401\/2775039-6490638002-heade.jpg","tiny_url":"http:\/\/static.giantbomb.com\/uploads\/square_mini\/29\/291401\/2775039-6490638002-heade.jpg"}}
La compréhension de la liste me semble juste. Pouvez-vous donner un exemple d'une paire que vous attendez dans 'grouped_data', mais ce n'est pas le cas? – saulspatz
Oui, je l'ai ajouté à la question.Ce qui m'a fait penser que cela pourrait être un problème avec la déclaration IF, c'est que j'ai aussi essayé d'associer les différentes données avec des noms au lieu de l'ID dans les différentes listes, mais cela m'a donné les mêmes résultats. –
Merci, mais nous ne sommes pas encore sur la même longueur d'onde. Ce que j'aimerais voir, c'est un objet JSON de 'games_data', et un objet JSON de' releases_data' qui, selon vous, devrait être apparié dans 'grouped_data' mais qui ne le sont pas. Vous dites que vous attendez environ 480 résultats, mais vous obtenez seulement 260 ou plus. S'il vous plaît donnez-nous un exemple de l'un des 220 manquant. – saulspatz