0

I'm triyng to extract some data from a JSON object to store them into another JSON file and then re-call them when I need it in Python.

At the moment I can't format them as I want.

response = requests.get(URL)

# getting data in the json format
data = response.json()

# looking for specific data
for result in data['daily']:

       #formatting results
       extracted = ("dt: {}, temp: {}".format(result['dt'], result['temp']['max']))

       #results Pretty printing to json (can't make it work)
       extractedJson = json.dumps(extracted, sort_keys=True, indent=4 * ' ')
       print (extractedJson)

       #save to file (saves only last extracted data)
       with open('data.json', 'w') as f:
        f.write(extractedJson)

data['daily'] is:

"daily": [
{
    "clouds": 41,
    "dew_point": 15.02,
    "dt": 1623927600,
    "temp": {
        "max": 31.05,
        "min": 20.39,
        "morn": 21.52,
        "night": 24.44
    },
{
    "clouds": 30,
    "dew_point": 15.02,
    "dt": 1624014000,
    "temp": {
        "max": 31.3,
        "min": 12.58,
        "morn": 14.26,
        "night": 15.14
    },

{
    "clouds": 50,
    "dew_point": 15.02,
    "dt": 1624100400,
    "temp": {
        "max": 31.37,
        "min": 11.08,
        "morn": 13.51,
        "night": 16.13
    },
  ]

print (extractedJson) gives me:

"dt: 1623927600, temp: 31.06"
"dt: 1624014000, temp: 31.3"
"dt: 1624100400, temp: 31.37"

I'd like to have something like

"day1": {
    "dt": 1623927600,
    "temp": 31.06 
 },

"day2": {
    "dt": 1624014000,
    "temp": 31.3
 },

"day3": {
    "dt": 1624100400,
    "temp": 31.37 
 },

Can you give me some code examples or suggest me what method to look for?

Thank you very much

Somu
  • 3
  • 1
  • Mind, the big problem here is that you're using string formatting at all. You should create a dict, not a string that looks like a dict, when you want `json.dumps()` to generate a JSON object (JSON's equivalent of Python's dict). – Charles Duffy Jun 17 '21 at 17:32

1 Answers1

0
  output = {}
  for index,value in enumerate(data['daily'], start=1):
      output[f'day{index}'] = { "dt": value['dt'], "temp": value['temp']['max']}
Daniel Paul
  • 495
  • 1
  • 6
  • 13