Как создать многоуровневый JSON в Python

Diego Miguel Granados Gómez спросил: 28 марта 2018 в 01:47 в: python

Я потребляю tweepy, чтобы получить твиты, и я хочу их вставить в один JSON-файл, например:

{
  "content": [
    {
      "text": "one tweet",
      "rts": 2,
      "favs": 17
    },
    {
      "text": "another tweet",
      "rts": 2,
      "favs": 17
    },
    {
      "text": "one last tweet",
      "rts": 2,
      "favs": 17
    }
  ]
}

Поэтому я использую:

import json
json_serial = "tweet"
my_json = {
  'content': {
    "text": json_serial,
    "rt": '2',
    "favs": '3',
  }
}
print(json.dumps(my_json))

Но это даст мне один JSON за твит и я хочу знать, как я могу создать один JSON и поместить в него все твиты.

2 ответа

Есть решение
toheedNiaz ответил: 28 марта 2018 в 01:59

Вот то, что вы просите. Вам нужно добавить данные твита в переменную контента, и в конце вы можете записать их в файл любым способом, каким вы захотите его использовать. Будет сгенерирован действительный json.

import json
my_json = {"content": []}tweets = ["one", "middle", "last"]
for tweet in tweets:
    dict_data = {
        "text": tweet,
        "rt": '2',
        "favs": '3',
    }    my_json["content"].append(dict_data)
print(json.dumps(my_json,indent=4, sort_keys=True))

Вывод

{  
   "content":[  
      {  
         "text":"one",
         "rt":"2",
         "favs":"3"
      },
      {  
         "text":"middle",
         "rt":"2",
         "favs":"3"
      },
      {  
         "text":"last",
         "rt":"2",
         "favs":"3"
      }
   ]
}
Joel Cormack ответил: 28 марта 2018 в 02:13

Мне не совсем понятно, о чем вы спрашиваете, помогает ли это? Как вы получаете твиты по одному?

import json
json_serial = 'tweet'
my_json = { 
    'content': [
        {"text": "tweet one",
        "rt": '1',
        "favs":'3',
        },  
        {"text": "another tweet",
        "rt": '2',
        "favs":'9',
        },  
        {"text": "yet another tweet",
        "rt": '3',
        "favs":'6',
        },  
    ]   
}
print(json.dumps(my_json))$ python json-python.py 
{"content": [{"rt": "2", "text": "tweet", "favs": "3"}, {"rt": "2", "text": "tweet", "favs": "3"}, {"rt": "2", "text": "tweet", "favs": "3"}]}