# Это меня давно смущало

Если вы новичок в JSON, JSON означает нотацию объектов JavaScript.

string = '{"apple": 4, "orange": 5, "pear": 6}'

^ Простая строка JSON (фактическая строка)

Когда разные приложения (с разными техническими стеками) взаимодействуют друг с другом, есть вероятность, что они используют строки JSON. Например, они отправляют строки JSON друг другу, и у каждого есть свой способ кодирования и декодирования этих строк JSON.

1) json.loads — строка JSON для объекта Python

Допустим, у нас есть строка JSON. И мы хотим его декодировать и преобразовать в объект Python (обычно это список или словарь).

import json

string = '{"apple": 4, "orange": 5, "pear": 6}'
x = json.loads(string)

print(x)  # {'apple': 4, 'orange': 5, 'pear': 6}
# x is a dict

json.loads

  • Принимает строку JSON (тип str)
  • преобразует его в объект Python (list/dict)
  • возвращает объект Python (список/словарь)

2) json.dumps — объект Python в строку JSON

Допустим, теперь у нас есть объект Python. Точнее, словарь Python. И мы хотим преобразовать это в строку JSON.

import json

d = {'apple': 4, 'orange': 5, 'pear': 6}
string = json.dumps(d)

print(string)  # {"apple": 4, "orange": 5, "pear": 6}
# string is a str type

json.dumps

  • принимает объект Python (обычно list/dict)
  • преобразует объект в строку JSON
  • возвращает строку

3) json.load — ФАЙЛ .json для объекта Python

Допустим, у нас есть строка JSON в файле .json test.json здесь:

{"apple": 4, "orange": 5, "pear": 6}
import json

with open('test.json', 'r') as f:
    x = json.load(f)
    print(x)    # {'apple': 4, 'orange': 5, 'pear': 6}

json.load

  • принимает объект _io.TextIOWrapper. Которые мы можем получить с помощью…