Hướng dẫn python json loads apostrophe

I have a json object that I am loading and replacing single with double quotes as I do. The syntax for this is:

response = json.loads(response.text.replace("'", '"'))

Within my data I have key/value pairs that take the format:

"name":"John O'Shea"

This is causing me to get the following traceback:

Traceback (most recent call last):
  File "C:\Python27\Whoscored\Test.py", line 204, in 
    response = json.loads(response.text.replace("'", '"').replace(',,', ','))
  File "C:\Python27\lib\json\__init__.py", line 338, in loads
    return _default_decoder.decode(s)
  File "C:\Python27\lib\json\decoder.py", line 366, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Python27\lib\json\decoder.py", line 382, in raw_decode
    obj, end = self.scan_once(s, idx)
ValueError: Expecting ',' delimiter: line 1 column 7751 (char 7750)

I don't actually want to replace the apostrophe in a name such as the one above, but I would have thought that my json.loads statement would have converted my key/value pair to this:

"name":"John O"Shea"

I'm assuming this would also fail however. What I need to know is:

1) Why is my json.loads statement not replacing the apostrophes in my string during the load? 2) What is the best way to escape the apostrophes within my string so that they do not cause an error, but are still displayed in the load?

I have used a json tester on my larger to string to confirm that there are no other errors that would stop the object from working correctly, which there are not.

Thanks

Nội dung chính

  • Giới thiệu về JSON
  • Ví dụ về Import JSON, khai báo, đọc và in dữ liệu JSON bằng Python
  • Ví dụ về ghi dữ liệu JSON trong Python
  • Ví dụ về Phương thức sắp xếp JSON trong Python
  • Chúc mừng bạn biết thêm về cách thao tác với JSON trong Python

Giới thiệu về JSON

JSON (JavaScript Object Notation): Là một định dạng dữ liệu rất phổ biến, được dùng để lưu trữ và thể hiện các dữ liệu có  cấu trúc.

JSON là định dạng dữ liệu phổ biến được sử dụng để truyền và nhận dữ liệu giữa ứng dụng web và web server.

Python cho phép thao tác với JSON dưới dạng chuỗi hoặc lưu đối tượng JSON vào trong file.

Hướng dẫn Lập trình với JSON trong Python


Ví dụ về Import JSON, khai báo, đọc và in dữ liệu JSON bằng Python

Để có thể làm việc với JSON, ta cần import module json. Ta cần import module trước khi gọi các hàm để thao tác với json.

Để có thể parse một JSON string, ta gọi method json.loads(). Phương thức này sẽ trả về một đối tượng dictionary chứa dữ liệu được chứa trong JSON string.

Ví dụ:

Trong ví dụ này, ta đã khai báo một string có chứa dữ liệu JSON, rồi gọi method loads() để xử lý chuỗi này.

Phương thức loads() sẽ trả về một đối tượng dictionary chứa toàn bộ dữ liệu json.

Sau đó ta in ra toàn bộ dữ liệu trong dictionary, rồi in ra value của key là ‘durian’.

import json

# Khai báo một JSON string

listfruits = '{"orange":"Qua cam", "strawberry":"Day tay", '\

'"grape":"Nho", "durian":"Sau rieng"}'

# Đọc JSON String, method này trả về một Dictionary

mylist = json.loads(listfruits)

# In ra thông tin của Dictionary

print(mylist)

# In ra một giá trị trong Dictionary

print(mylist['durian'])
 

Kết quả được hiển thị như trong hình bên dưới:

Khởi tạo dữ liệu JSON trong Python

Ví dụ về ghi dữ liệu JSON trong Python

Để đọc một file có chứa JSON object, ta gọi method json.load().

Để chuyển đổi từ một dictionary thành một JSON string, ta gọi method json.dumps().

Để ghi dữ liệu JSON ra file trong Python, ta sử  dụng method json.dump().

Ví dụ:

Trong ví dụ này, ta đã khai báo một chuỗi chứa dữ liệu JSON.

Tiếp theo ta tạo và mở file có tên là coffee.txt. Sau đó ta gọi phương thức dump() để ghi dữ liệu json vào file.

# Khai báo JSON String

coffees = "{"capuchino":"Cafe Italian",

"expresso": ["Matcha""Mocha"],

"VietNam"True,

"latte"32

}"

# Ghi dữ liệu vào file coffee.txt

with open('coffee.txt''w'as myfile:

json.dump(coffeesmyfile)

print('Ghi file thanh cong !')
 

Kết quả được hiển thị như hình bên dưới:

Ghi dữ liệu vào file JSON

Sau khi thực thi thành công chương trình, ta có thể thấy file coffee.txt đã được tạo ra trong project như hình sau:

Ghi dữ liệu vào file JSON - Tạo file coffee.txt

 

Để kiểm tra, ta mở file và thấy dữ liệu đã được ghi vào file thành công đúng như mong muốn:

Ghi dữ liệu vào file JSON - Dữ liệu ghi trong file coffee.txt

Ví dụ về Phương thức sắp xếp JSON trong Python

Phương thức json.dumps() cung cấp các tham số để cho phép định dạng kết quả (thụt lề) hoặc sắp xếp kết quả xử lý.

Ví dụ:

Trong ví dụ dưới đây, ta khai báo một string json gồm các loại trái cây.

Sau đó, ta gọi method dumps() để xử lý string json ở trên.

Đồng thời ta đã truyền 2 tham số cho method này, để cho phép thụt lề kết quả vào 4 ký tự, và sắp xếp kết quả theo thứ tự aphabet của key.

# Khai báo JSON String

danhsachhoaqua = "{

"mango":"Qua xoai",

"strawberry":"Dau tay",

"avocado":"Qua bo",

"durian":"Sau rieng",

"orange":"Qua cam",

"lemon":"Dua hau",

"coconut":"Qua dua",

}"

# Xử lý và sắp xếp kết quả của JSON String theo key

print(json.dump(danhsachhoaquaindent=4sort_keys=True))
 

Kết quả được hiển thị đúng như ta mong  muốn. Các phần tử đã được sắp xếp lại theo key như hình bên dưới.

Sắp xếp dữ liệu trong JSON

Chúc mừng bạn biết thêm về cách thao tác với JSON trong Python

Như vậy là bạn đã biết một số thao tác cơ bản với JSON trong Python. Hãy luyện tập lại các ví dụ, đảm bảo rằng bạn hiểu rõ rồi mới sang bài tiếp theo nhé.> Hoặc tham gia ngay KHÓA HỌC PYTHON để có kiến thức đầy đủ, bài bản hơn.

TONY HÙNG CƯỜNG