Working with JSON Files in Python

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.json
Book data written to books_data.json
Book 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.json
Modified book data written back to books_data.json
Modified 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.

原文链接:Working with JSON Files in Python

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
Aim for the moon. If you miss, you may hit a star.
把月亮作为你的目标。如果你没打中,也许你还能打中星星
评论 抢沙发

请登录后发表评论

    暂无评论内容