- Задача на Json
- Работа с JSON
- A: Считываем JSON
- B: Записываем JSON
- C: Разные типы JSON
- D: Обновление объекта
- E: Восстановление недостающих атрибутов
- F: Рекурсивное суммирование
- G: Рекурсивный обход
- H: Рекурсивное обновление
- Python JSON Exercise
- Table of contents
- Exercise 1: Convert the following dictionary into JSON format
- Exercise 2: Access the value of key2 from the following JSON
- Exercise 3: PrettyPrint following JSON data
- Exercise 5: Access the nested key ‘salary’ from the following JSON
- Exercise 6: Convert the following Vehicle Object into JSON
- Exercise 7: Convert the following JSON into Vehicle Object
- Exercise 8: Check whether following json is valid or invalid. If Invalid correct it
- Exercise 9: Parse the following JSON to get all the values of a key ‘name’ within an array
- About Vishal
- Related Tutorial Topics:
- Python Exercises and Quizzes
Задача на Json
Напишите программу, которая распределит полученную информацию по двум категориям: то, что похоже на другие аналогичные планеты (same), и то, что отличает Солярис от других планет (different).
Формат ввода
Вводятся строки, в каждой из которых записано название параметра и его значение через две звездочки, окруженные пробелами.
Формат вывода
В файл ocean.json запишите словарь словарей: ключи same и different, а значение по каждому ключу – словарь подходящих параметров.
Параметры, имеющие четные двузначные положительные значения, относятся к категории same, остальные к different.
1 2 3 4 5 6 7 8 9 10 11 12
atmospheric composition ** 15 density ** 5700 illumination ** 35 axial tilt ** 48 terrain ** 86 acceleration of gravity ** 12 mass ** 62345 radius ** 6378 deviation from sphericity ** 15 flatness ** 34 ocean depth ** 1887 ocean composition ** 65
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
{ "same": { "axial tilt": "48", "terrain": "86", "acceleration of gravity": "12", "flatness": "34" }, "different": { "atmospheric composition": "15", "density": "5700", "illumination": "35", "mass": "62345", "radius": "6378", "deviation from sphericity": "15", "ocean depth": "1887", "ocean composition": "65" } }
eccentric anomaly ** 48 secondary movement ** -16 inclination ** 3 stellar dynamics ** 99 primary era ** 16
{ "same": { "eccentric anomaly": "48", "primary era": "16" }, "different": { "secondary movement": "-16", "inclination": "3", "stellar dynamics": "99" } }
import json with open("ocean.json", "w") as oceanFile: data = json.dumps(oceanFile) json.dump(data, oceanFile)
Работа с JSON
Как всегда, ввод-вывод в задачах этого листка может быть как стандартным, так и файловым (input.txt/output.txt). Используемая кодировка для русских букв: UTF-8.
A: Считываем JSON
city: Москва country: Россия street: Большая Дмитровка
B: Записываем JSON
Решите обратную задачу. Программа получает на вход пары ключ–значение, разделённых двоеточием и пробелом. Создайте словарь из этих пар (все значения считаем строками) и выведите его в формате JSON.
city: Москва country: Россия street: Большая Дмитровка
C: Разные типы JSON
- Строки (рекомендуется представление в кодировке UTF-8). Например, «Hello».
- Числа (целые или вещественные). Например, 179 или 1.79.
- Логические (true или false).
- null (нулевое значение).
- Массивы (списки), задаются в квадратных скобках. Например, [1, 2, 3] .
- Объекты JSON (словари), задаются в фигурных скобках. Например, .
Вам дан JSON-объект, являющийся списком. Пройдитесь по его элементам, и со всеми элементами сделайте следующее:
Если это строка, добавьте к конец строки восклицательный знак.
Если это число, то увеличьте его на 1.
Если это логическое значение, то инвертируйте его.
Если это список, то удвойте его.
Если это объект, то добавьте к нему новый атрибут с ключом «newkey» и пустым значением.
Если это пустое значение, то удалите его из списка.
["Hello", 179, 0.5, true, null, [1, 2, 3], ]
["Hello!", 180, 1.5, false, [1, 2, 3, 1, 2, 3], ]
D: Обновление объекта
Даны два объекта JSON. Необходимо объединить их вместе по следующему правилу: результат берёт все атрибуты из первого объекта, а если во втором объекте содержатся атрибуты с такими же ключами, как и у первого объекта, или отсутстсвующие в первом объекте, то они также добавляются в результат.
E: Восстановление недостающих атрибутов
Дан список объектов JSON, у них могут быть разные атрибуты. При этом у разных объектов может быть разный набор атрибутов: некоторых атрибутов может не хватать. Добавьте ко всем объектам недостающие атрибуты: создайте их, записав туда значения null.
F: Рекурсивное суммирование
Дан объект JSON, являющийся списком. Элементами списка могут быть только числа или аналогичные списки, содержащие числа и вложенные списки и т.д. Найдите сумму всех чисел во всех списках.
G: Рекурсивный обход
Дан объект JSON, являющийся словарём. Атрибутами словаря могут быть числа, строки или аналогичные словари.
Выведите все пары ключ–значение словаря, рекурсивно выводя значения атрибутов всех дочерних словарей. При выводе атрибутов необходимо перечислять имена всех ключей, начиная с верхнего уровня, разделяя их точками (см. пример).
< "firstName": "Иван", "lastName": "Иванов", "birthDate": < "day": 10, "month": "October", "year": 2002 >, "address": < "streetAddress": "Московское ш., 101, кв.101", "city": < "region": "Ленинградская область", "type": "город", "cityName": "Сосново" >, "postalCode": "101101" > >
address.city.cityName: Сосново address.city.region: Ленинградская область address.city.type: город address.postalCode: 101101 address.streetAddress: Московское ш., 101, кв.101 birthDate.day: 10 birthDate.month: October birthDate.year: 2002 firstName: Иван lastName: Иванов
H: Рекурсивное обновление
Даны два объекта JSON, являющихся словарём. Атрибутами словаря могут быть числа, строки или аналогичные словари (как в предыдущей задаче).
Выполните обновление первого объекта данными из второго объекта. При этом если атрибут с одинаковым названием и в первом, и во втором объекте является словарём, необходимо выполнить процедуру обновление рекурсивно для этого объекта.
Если же атрибут с одинаковым ключом является словарём только у одного из двух объектов, то берётся значение второго объекта.
Python JSON Exercise
This Python JSON exercise helps Python developers to practice JSON creation, manipulation, and parsing. As you know, JSON (an acronym for JavaScript Object Notation) is a data-interchange format and is commonly used for client-server communication.
Read Python JSON tutorials for any help.
This exercise includes the following: –
- It has 9 questions and solutions provided for each question.
- Each question includes a specific JSON concept you need to learn. When you complete each question, you get more familiar with JSON encoding and decoding in Python.
Use Online Code Editor to solve exercise questions.
Table of contents
Exercise 1: Convert the following dictionary into JSON format
Expected Output:
import json data = jsonData = json.dumps(data) print(jsonData)
Exercise 2: Access the value of key2 from the following JSON
import json sampleJson = """""" # write code to print the value of key2
Expected Output:
import json sampleJson = """""" data = json.loads(sampleJson) print(data['key2'])
Exercise 3: PrettyPrint following JSON data
PrettyPrint following JSON data with indent level 2 and key-value separators should be («,», » syntax» > sampleJson =
Expected Output:
import json sampleJson = prettyPrintedJson = json.dumps(sampleJson, indent=2, separators=(",", " wp-block-heading" >Exercise 4: Sort JSON keys in and write them into a fileSort following JSON data alphabetical order of keys
sampleJson =Expected Output:
import json sampleJson = print("Started writing JSON data into a file") with open("sampleJson.json", "w") as write_file: json.dump(sampleJson, write_file, indent=4, sort_keys=True) print("Done writing JSON data into a file")
Exercise 5: Access the nested key ‘salary’ from the following JSON
import json sampleJson = """ < "company":< "employee":< "name":"emma", "payble":< "salary":7000, "bonus":800 >> > >""" # write code to print the value of salary
Expected Output:
import json sampleJson = """ < "company":< "employee":< "name":"emma", "payble":< "salary":7000, "bonus":800 >> > >""" data = json.loads(sampleJson) print(data['company']['employee']['payble']['salary'])
Exercise 6: Convert the following Vehicle Object into JSON
import json class Vehicle: def __init__(self, name, engine, price): self.name = name self.engine = engine self.price = price vehicle = Vehicle("Toyota Rav4", "2.5L", 32000) # Convert it into JSON format
Expected Output:
import json from json import JSONEncoder class Vehicle: def __init__(self, name, engine, price): self.name = name self.engine = engine self.price = price class VehicleEncoder(JSONEncoder): def default(self, o): return o.__dict__ vehicle = Vehicle("Toyota Rav4", "2.5L", 32000) print("Encode Vehicle Object into JSON") vehicleJson = json.dumps(vehicle, indent=4, cls=VehicleEncoder) print(vehicleJson)
Exercise 7: Convert the following JSON into Vehicle Object
For example, we should be able to access Vehicle Object using the dot operator like this.
vehicleObj.name, vehicleObj.engine, vehicleObj.priceimport json class Vehicle: def __init__(self, name, engine, price): self.name = name self.engine = engine self.price = price def vehicleDecoder(obj): return Vehicle(obj['name'], obj['engine'], obj['price']) vehicleObj = json.loads('< "name": "Toyota Rav4", "engine": "2.5L", "price": 32000 >', object_hook=vehicleDecoder) print("Type of decoded object from JSON Data") print(type(vehicleObj)) print("Vehicle Details") print(vehicleObj.name, vehicleObj.engine, vehicleObj.price)
Exercise 8: Check whether following json is valid or invalid. If Invalid correct it
Python provides The json.tool module to validate JSON objects from the command line. Run the following command.
Command: echo "JSON DATA" | python -m json.tool
echo < "company":< "employee":< "name":"emma", "payble":< "salary":7000 "bonus":800>> > > | python -m json.tool
Expecting ',' delimiter: line 1 column 68 (char 67)Just add ',' after "salary":7000 to solve the error.
import json def validateJSON(jsonData): try: json.loads(jsonData) except ValueError as err: return False return True InvalidJsonData = """ < "company":< "employee":< "name":"emma", "payble":< "salary":7000 "bonus":800>> > >""" isValid = validateJSON(InvalidJsonData) print("Given JSON string is Valid", isValid)
Exercise 9: Parse the following JSON to get all the values of a key ‘name’ within an array
Expected Output:
import json sampleJson = """[ < "id":1, "name":"name1", "color":[ "red", "green" ] >, < "id":2, "name":"name2", "color":[ "pink", "yellow" ] >]""" data = [] try: data = json.loads(sampleJson) except Exception as e: print(e) dataList = [item.get('name') for item in data] print(dataList)
Did you find this page helpful? Let others know about it. Sharing helps me continue to create free Python resources.
About Vishal
I’m Vishal Hule, Founder of PYnative.com. I am a Python developer, and I love to write articles to help students, developers, and learners. Follow me on Twitter
Related Tutorial Topics:
Python Exercises and Quizzes
Free coding exercises and quizzes cover Python basics, data structure, data analytics, and more.
- 15+ Topic-specific Exercises and Quizzes
- Each Exercise contains 10 questions
- Each Quiz contains 12-15 MCQ