Introduction
JSON (JavaScript Object Notation) is a flexible format for storing data, including information about multiple books. In this chapter, we’ll explore how to work with JSON files in Python, focusing on using multiple books as examples.
Topics
- Reading JSON Files
- Writing JSON Files
- Manipulating JSON Data
Reading JSON Files
- Use the
json
module in Python to read JSON files. - Use the
json.load()
function to load JSON data from a file into a Python dictionary.
Example
JSON file named books_data.json:
<span>[</span><span> </span><span>{</span><span> </span><span>"title"</span><span>:</span><span> </span><span>"Python Programming"</span><span>,</span><span> </span><span>"author"</span><span>:</span><span> </span><span>"John Smith"</span><span>,</span><span> </span><span>"pages"</span><span>:</span><span> </span><span>300</span><span> </span><span>},</span><span> </span><span>{</span><span> </span><span>"title"</span><span>:</span><span> </span><span>"Data Science Essentials"</span><span>,</span><span> </span><span>"author"</span><span>:</span><span> </span><span>"Alice Johnson"</span><span>,</span><span> </span><span>"pages"</span><span>:</span><span> </span><span>250</span><span> </span><span>},</span><span> </span><span>{</span><span> </span><span>"title"</span><span>:</span><span> </span><span>"Web Development Basics"</span><span>,</span><span> </span><span>"author"</span><span>:</span><span> </span><span>"Michael Brown"</span><span>,</span><span> </span><span>"pages"</span><span>:</span><span> </span><span>200</span><span> </span><span>}</span><span> </span><span>]</span><span> </span><span>[</span><span> </span><span>{</span><span> </span><span>"title"</span><span>:</span><span> </span><span>"Python Programming"</span><span>,</span><span> </span><span>"author"</span><span>:</span><span> </span><span>"John Smith"</span><span>,</span><span> </span><span>"pages"</span><span>:</span><span> </span><span>300</span><span> </span><span>},</span><span> </span><span>{</span><span> </span><span>"title"</span><span>:</span><span> </span><span>"Data Science Essentials"</span><span>,</span><span> </span><span>"author"</span><span>:</span><span> </span><span>"Alice Johnson"</span><span>,</span><span> </span><span>"pages"</span><span>:</span><span> </span><span>250</span><span> </span><span>},</span><span> </span><span>{</span><span> </span><span>"title"</span><span>:</span><span> </span><span>"Web Development Basics"</span><span>,</span><span> </span><span>"author"</span><span>:</span><span> </span><span>"Michael Brown"</span><span>,</span><span> </span><span>"pages"</span><span>:</span><span> </span><span>200</span><span> </span><span>}</span><span> </span><span>]</span><span> </span>[ { "title": "Python Programming", "author": "John Smith", "pages": 300 }, { "title": "Data Science Essentials", "author": "Alice Johnson", "pages": 250 }, { "title": "Web Development Basics", "author": "Michael Brown", "pages": 200 } ]
Enter fullscreen mode Exit fullscreen mode
<span>import</span> <span>json</span><span># Read book data from a JSON file </span><span>with</span> <span>open</span><span>(</span><span>file</span><span>=</span><span>"</span><span>books_data.json</span><span>"</span><span>,</span> <span>mode</span><span>=</span><span>"</span><span>r</span><span>"</span><span>)</span> <span>as</span> <span>file</span><span>:</span><span>books_data</span> <span>=</span> <span>json</span><span>.</span><span>load</span><span>(</span><span>fp</span><span>=</span><span>file</span><span>)</span><span>print</span><span>(</span><span>books_data</span><span>)</span><span>import</span> <span>json</span> <span># Read book data from a JSON file </span><span>with</span> <span>open</span><span>(</span><span>file</span><span>=</span><span>"</span><span>books_data.json</span><span>"</span><span>,</span> <span>mode</span><span>=</span><span>"</span><span>r</span><span>"</span><span>)</span> <span>as</span> <span>file</span><span>:</span> <span>books_data</span> <span>=</span> <span>json</span><span>.</span><span>load</span><span>(</span><span>fp</span><span>=</span><span>file</span><span>)</span> <span>print</span><span>(</span><span>books_data</span><span>)</span>import json # Read book data from a JSON file with open(file="books_data.json", mode="r") as file: books_data = json.load(fp=file) print(books_data)
Enter fullscreen mode Exit fullscreen mode
Output:
[{'title': 'Python Programming', 'author': 'John Smith', 'pages': 300}, {'title': 'Data Science Essentials', 'author': 'Alice Johnson', 'pages': 250}, {'title': 'Web Development Basics', 'author': 'Michael Brown', 'pages': 200}][{'title': 'Python Programming', 'author': 'John Smith', 'pages': 300}, {'title': 'Data Science Essentials', 'author': 'Alice Johnson', 'pages': 250}, {'title': 'Web Development Basics', 'author': 'Michael Brown', 'pages': 200}][{'title': 'Python Programming', 'author': 'John Smith', 'pages': 300}, {'title': 'Data Science Essentials', 'author': 'Alice Johnson', 'pages': 250}, {'title': 'Web Development Basics', 'author': 'Michael Brown', 'pages': 200}]
Enter fullscreen mode Exit fullscreen mode
Writing JSON Files
- Use the
json.dump()
function to write Python data to a JSON file. - Ensure the data you’re writing is serializable to JSON format.
Example
<span>import</span> <span>json</span><span># Book data for multiple books </span><span>books</span> <span>=</span> <span>[</span><span>{</span><span>"</span><span>title</span><span>"</span><span>:</span> <span>"</span><span>Python Programming</span><span>"</span><span>,</span> <span>"</span><span>author</span><span>"</span><span>:</span> <span>"</span><span>John Smith</span><span>"</span><span>,</span> <span>"</span><span>pages</span><span>"</span><span>:</span> <span>300</span><span>},</span><span>{</span><span>"</span><span>title</span><span>"</span><span>:</span> <span>"</span><span>Data Science Essentials</span><span>"</span><span>,</span> <span>"</span><span>author</span><span>"</span><span>:</span> <span>"</span><span>Alice Johnson</span><span>"</span><span>,</span> <span>"</span><span>pages</span><span>"</span><span>:</span> <span>250</span><span>},</span><span>{</span><span>"</span><span>title</span><span>"</span><span>:</span> <span>"</span><span>Web Development Basics</span><span>"</span><span>,</span> <span>"</span><span>author</span><span>"</span><span>:</span> <span>"</span><span>Michael Brown</span><span>"</span><span>,</span> <span>"</span><span>pages</span><span>"</span><span>:</span> <span>200</span><span>}</span><span>]</span><span># Write book data to a JSON file </span><span>with</span> <span>open</span><span>(</span><span>file</span><span>=</span><span>"</span><span>books_data.json</span><span>"</span><span>,</span> <span>mode</span><span>=</span><span>"</span><span>w</span><span>"</span><span>)</span> <span>as</span> <span>file</span><span>:</span><span>json</span><span>.</span><span>dump</span><span>(</span><span>obj</span><span>=</span><span>books</span><span>,</span> <span>fp</span><span>=</span><span>file</span><span>)</span><span>print</span><span>(</span><span>"</span><span>Book data written to books_data.json</span><span>"</span><span>)</span><span>import</span> <span>json</span> <span># Book data for multiple books </span><span>books</span> <span>=</span> <span>[</span> <span>{</span><span>"</span><span>title</span><span>"</span><span>:</span> <span>"</span><span>Python Programming</span><span>"</span><span>,</span> <span>"</span><span>author</span><span>"</span><span>:</span> <span>"</span><span>John Smith</span><span>"</span><span>,</span> <span>"</span><span>pages</span><span>"</span><span>:</span> <span>300</span><span>},</span> <span>{</span><span>"</span><span>title</span><span>"</span><span>:</span> <span>"</span><span>Data Science Essentials</span><span>"</span><span>,</span> <span>"</span><span>author</span><span>"</span><span>:</span> <span>"</span><span>Alice Johnson</span><span>"</span><span>,</span> <span>"</span><span>pages</span><span>"</span><span>:</span> <span>250</span><span>},</span> <span>{</span><span>"</span><span>title</span><span>"</span><span>:</span> <span>"</span><span>Web Development Basics</span><span>"</span><span>,</span> <span>"</span><span>author</span><span>"</span><span>:</span> <span>"</span><span>Michael Brown</span><span>"</span><span>,</span> <span>"</span><span>pages</span><span>"</span><span>:</span> <span>200</span><span>}</span> <span>]</span> <span># Write book data to a JSON file </span><span>with</span> <span>open</span><span>(</span><span>file</span><span>=</span><span>"</span><span>books_data.json</span><span>"</span><span>,</span> <span>mode</span><span>=</span><span>"</span><span>w</span><span>"</span><span>)</span> <span>as</span> <span>file</span><span>:</span> <span>json</span><span>.</span><span>dump</span><span>(</span><span>obj</span><span>=</span><span>books</span><span>,</span> <span>fp</span><span>=</span><span>file</span><span>)</span> <span>print</span><span>(</span><span>"</span><span>Book data written to books_data.json</span><span>"</span><span>)</span>import json # Book data for multiple books books = [ {"title": "Python Programming", "author": "John Smith", "pages": 300}, {"title": "Data Science Essentials", "author": "Alice Johnson", "pages": 250}, {"title": "Web Development Basics", "author": "Michael Brown", "pages": 200} ] # Write book data to a JSON file with open(file="books_data.json", mode="w") as file: json.dump(obj=books, fp=file) print("Book data written to books_data.json")
Enter fullscreen mode Exit fullscreen mode
Output:
Book data written to books_data.jsonBook data written to books_data.jsonBook data written to books_data.json
Enter fullscreen mode Exit fullscreen mode
Manipulating JSON Data
- Use Python’s dictionary methods to manipulate JSON data once it’s loaded.
- Convert JSON data to Python objects (dict, list, etc.) for easy manipulation.
Example
<span>import</span> <span>json</span><span># Read book data from a JSON file </span><span>with</span> <span>open</span><span>(</span><span>file</span><span>=</span><span>"</span><span>books_data.json</span><span>"</span><span>,</span> <span>mode</span><span>=</span><span>"</span><span>r</span><span>"</span><span>)</span> <span>as</span> <span>file</span><span>:</span><span>books_data</span> <span>=</span> <span>json</span><span>.</span><span>load</span><span>(</span><span>file</span><span>)</span><span># Manipulate book data </span><span>for</span> <span>book</span> <span>in</span> <span>books_data</span><span>:</span><span>book</span><span>[</span><span>"</span><span>pages</span><span>"</span><span>]</span> <span>+=</span> <span>50</span> <span># Increase the number of pages by 50 for each book </span><span># Write modified book data back to the file </span><span>with</span> <span>open</span><span>(</span><span>file</span><span>=</span><span>"</span><span>books_data.json</span><span>"</span><span>,</span> <span>mode</span><span>=</span><span>"</span><span>w</span><span>"</span><span>)</span> <span>as</span> <span>file</span><span>:</span><span>json</span><span>.</span><span>dump</span><span>(</span><span>books_data</span><span>,</span> <span>file</span><span>)</span><span>print</span><span>(</span><span>"</span><span>Modified book data written back to books_data.json</span><span>"</span><span>)</span><span>import</span> <span>json</span> <span># Read book data from a JSON file </span><span>with</span> <span>open</span><span>(</span><span>file</span><span>=</span><span>"</span><span>books_data.json</span><span>"</span><span>,</span> <span>mode</span><span>=</span><span>"</span><span>r</span><span>"</span><span>)</span> <span>as</span> <span>file</span><span>:</span> <span>books_data</span> <span>=</span> <span>json</span><span>.</span><span>load</span><span>(</span><span>file</span><span>)</span> <span># Manipulate book data </span><span>for</span> <span>book</span> <span>in</span> <span>books_data</span><span>:</span> <span>book</span><span>[</span><span>"</span><span>pages</span><span>"</span><span>]</span> <span>+=</span> <span>50</span> <span># Increase the number of pages by 50 for each book </span> <span># Write modified book data back to the file </span><span>with</span> <span>open</span><span>(</span><span>file</span><span>=</span><span>"</span><span>books_data.json</span><span>"</span><span>,</span> <span>mode</span><span>=</span><span>"</span><span>w</span><span>"</span><span>)</span> <span>as</span> <span>file</span><span>:</span> <span>json</span><span>.</span><span>dump</span><span>(</span><span>books_data</span><span>,</span> <span>file</span><span>)</span> <span>print</span><span>(</span><span>"</span><span>Modified book data written back to books_data.json</span><span>"</span><span>)</span>import json # Read book data from a JSON file with open(file="books_data.json", mode="r") as file: books_data = json.load(file) # Manipulate book data for book in books_data: book["pages"] += 50 # Increase the number of pages by 50 for each book # Write modified book data back to the file with open(file="books_data.json", mode="w") as file: json.dump(books_data, file) print("Modified book data written back to books_data.json")
Enter fullscreen mode Exit fullscreen mode
Output:
Modified book data written back to books_data.jsonModified book data written back to books_data.jsonModified book data written back to books_data.json
Enter fullscreen mode Exit fullscreen mode
Output file for modified books_data.json:
<span>[</span><span> </span><span>{</span><span> </span><span>"title"</span><span>:</span><span> </span><span>"Python Programming"</span><span>,</span><span> </span><span>"author"</span><span>:</span><span> </span><span>"John Smith"</span><span>,</span><span> </span><span>"pages"</span><span>:</span><span> </span><span>350</span><span> </span><span>},</span><span> </span><span>{</span><span> </span><span>"title"</span><span>:</span><span> </span><span>"Data Science Essentials"</span><span>,</span><span> </span><span>"author"</span><span>:</span><span> </span><span>"Alice Johnson"</span><span>,</span><span> </span><span>"pages"</span><span>:</span><span> </span><span>300</span><span> </span><span>},</span><span> </span><span>{</span><span> </span><span>"title"</span><span>:</span><span> </span><span>"Web Development Basics"</span><span>,</span><span> </span><span>"author"</span><span>:</span><span> </span><span>"Michael Brown"</span><span>,</span><span> </span><span>"pages"</span><span>:</span><span> </span><span>250</span><span> </span><span>}</span><span> </span><span>]</span><span> </span><span>[</span><span> </span><span>{</span><span> </span><span>"title"</span><span>:</span><span> </span><span>"Python Programming"</span><span>,</span><span> </span><span>"author"</span><span>:</span><span> </span><span>"John Smith"</span><span>,</span><span> </span><span>"pages"</span><span>:</span><span> </span><span>350</span><span> </span><span>},</span><span> </span><span>{</span><span> </span><span>"title"</span><span>:</span><span> </span><span>"Data Science Essentials"</span><span>,</span><span> </span><span>"author"</span><span>:</span><span> </span><span>"Alice Johnson"</span><span>,</span><span> </span><span>"pages"</span><span>:</span><span> </span><span>300</span><span> </span><span>},</span><span> </span><span>{</span><span> </span><span>"title"</span><span>:</span><span> </span><span>"Web Development Basics"</span><span>,</span><span> </span><span>"author"</span><span>:</span><span> </span><span>"Michael Brown"</span><span>,</span><span> </span><span>"pages"</span><span>:</span><span> </span><span>250</span><span> </span><span>}</span><span> </span><span>]</span><span> </span>[ { "title": "Python Programming", "author": "John Smith", "pages": 350 }, { "title": "Data Science Essentials", "author": "Alice Johnson", "pages": 300 }, { "title": "Web Development Basics", "author": "Michael Brown", "pages": 250 } ]
Enter fullscreen mode Exit fullscreen mode
Conclusion
JSON files offer a convenient way to store and manage data for multiple books. Python’s json
module provides powerful tools for reading, writing, and manipulating JSON files, making it suitable for handling server configurations involving various resources such as books and beyond.
暂无评论内容