Hướng dẫn python deeply nested json - trăn lồng sâu json

Tôi đang có một tệp được lồng sâu và tự hỏi làm thế nào tôi có thể truy cập các giá trị cho sản phẩm (chi tiết, màu sắc, kích thước, vật liệu).

Show
  {
     "article": [

      {
       "product":{
        "details": {
        "color": "blue",
        "size": "small",
        "material": "cotton"
        }
      },
      "availability": "in stock",
      "sku": "2317",
      "cost": "$23"
      },
     {
     "product":{
        "details": {
        "color": "red",
        "size": "large",
        "material": "plastic"
        }
     },
     "availability": "no stock",
     "sku": "4342",
     "cost": "$44"
     }
     ],

   "IDs":[
  {
   "name": "Manager",
   "batchID": 3312312
  }
 ]
}

Mục tiêu của tôi là lặp lại các giá trị cho mỗi

products = [ item['product'] for item in data['articles']]
8 bằng Python.

Cảm ơn bạn trước

Hỏi ngày 8 tháng 12 năm 2021 lúc 15:43Dec 8, 2021 at 15:43

Hướng dẫn python deeply nested json - trăn lồng sâu json

3

Điều này sẽ cung cấp cho bạn danh sách các sản phẩm

products = [ item['product'] for item in data['articles']]

Đã trả lời ngày 8 tháng 12 năm 2021 lúc 15:55Dec 8, 2021 at 15:55

Bạn có thể làm một cái gì đó như thế này


mydict =   {
     "article": [

      {
       "product":{
        "details": {
        "color": "blue",
        "size": "small",
        "material": "cotton"
        }
      },
      "availability": "in stock",
      "sku": "2317",
      "cost": "$23"
      },
     {
     "product":{
        "details": {
        "color": "red",
        "size": "large",
        "material": "plastic"
        }
     },
     "availability": "no stock",
     "sku": "4342",
     "cost": "$44"
     }
     ],

   "IDs":[
  {
   "name": "Manager",
   "batchID": 3312312
  }
 ]
}

for item in mydict['article']:
    print(item['product'])

Đây có phải là điều bạn muốn không?

Đã trả lời ngày 8 tháng 12 năm 2021 lúc 15:53Dec 8, 2021 at 15:53

Hướng dẫn python deeply nested json - trăn lồng sâu json

DaverdaverDaveR

1.21614 Huy hiệu bạc21 Huy hiệu đồng14 silver badges21 bronze badges

0

Tôi đã đặt JSON của bạn vào JsonPath, và sau khi dùng thử và lỗi nhỏ, rõ ràng là bạn cần JsonPath này để truy cập các trường:

products = [ item['product'] for item in data['articles']]
9

Vòng lặp qua mảng bằng cách sử dụng một cái gì đó tương tự (xin lỗi, không có python env để kiểm tra đúng):

import json

json_data= json.dumps("your_json")

items = json.loads(json_data)
for i in range(0, len(items['article'])):
   print items['article'][i]['product']['details']

Đã trả lời ngày 8 tháng 12 năm 2021 lúc 16:09Dec 8, 2021 at 16:09

Hướng dẫn python deeply nested json - trăn lồng sâu json

Nội phân Chính showShow

  • Một số thủ thuật gấu trúc hữu ích nhất
  • 1. Đọc JSON đơn giản từ tệp cục bộ
  • 2. Đọc JSON đơn giản từ URL
  • 3. Danh sách lồng nhau từ đối tượng JSON
  • 4. Danh sách lồng nhau và Dict từ đối tượng JSON
  • 5. Trích xuất một giá trị duy nhất từ ​​JSON được lồng sâu
  • Bạn có thể quan tâm đến một số bài báo Pandas khác của tôi:
  • Làm cách nào để đọc tệp JSON vào DataFrame trong Python?
  • Làm thế nào để bạn tạo một khung dữ liệu từ tệp JSON trong Python?
  • Chúng ta có thể chuyển đổi JSON thành DataFrame trong Python không?
  • Pandas có thể nhập JSON không?

Một số thủ thuật gấu trúc hữu ích nhất

1. Đọc JSON đơn giản từ tệp cục bộ

2. Đọc JSON đơn giản từ URL

  1. 3. Danh sách lồng nhau từ đối tượng JSON
  2. 4. Danh sách lồng nhau và Dict từ đối tượng JSON
  3. 5. Trích xuất một giá trị duy nhất từ ​​JSON được lồng sâu
  4. Bạn có thể quan tâm đến một số bài báo Pandas khác của tôi:
  5. Chuyển đổi JSON thành DataFrame Pandas (hình ảnh của tác giả bằng canva.com)

Đọc dữ liệu là bước đầu tiên trong bất kỳ dự án khoa học dữ liệu nào. Thông thường, bạn sẽ làm việc với dữ liệu ở định dạng JSON và gặp vấn đề ngay từ đầu. Trong bài viết này, bạn sẽ học cách sử dụng các chức năng tích hợp của Pandas


mydict =   {
     "article": [

      {
       "product":{
        "details": {
        "color": "blue",
        "size": "small",
        "material": "cotton"
        }
      },
      "availability": "in stock",
      "sku": "2317",
      "cost": "$23"
      },
     {
     "product":{
        "details": {
        "color": "red",
        "size": "large",
        "material": "plastic"
        }
     },
     "availability": "no stock",
     "sku": "4342",
     "cost": "$44"
     }
     ],

   "IDs":[
  {
   "name": "Manager",
   "batchID": 3312312
  }
 ]
}

for item in mydict['article']:
    print(item['product'])
0 và

mydict =   {
     "article": [

      {
       "product":{
        "details": {
        "color": "blue",
        "size": "small",
        "material": "cotton"
        }
      },
      "availability": "in stock",
      "sku": "2317",
      "cost": "$23"
      },
     {
     "product":{
        "details": {
        "color": "red",
        "size": "large",
        "material": "plastic"
        }
     },
     "availability": "no stock",
     "sku": "4342",
     "cost": "$44"
     }
     ],

   "IDs":[
  {
   "name": "Manager",
   "batchID": 3312312
  }
 ]
}

for item in mydict['article']:
    print(item['product'])
1 để giải quyết các vấn đề phổ biến sau đây:

1. Đọc JSON đơn giản từ tệp cục bộ

2. Đọc JSON đơn giản từ URL

[
{
"id": "A001",
"name": "Tom",
"math": 60,
"physics": 66,
"chemistry": 61
},
{
"id": "A002",
"name": "James",
"math": 89,
"physics": 76,
"chemistry": 51
},
{
"id": "A003",
"name": "Jenny",
"math": 79,
"physics": 90,
"chemistry": 78
}
]

3. Danh sách lồng nhau từ đối tượng JSON

df = pd.read_json('data/simple.json')

4. Danh sách lồng nhau và Dict từ đối tượng JSON

5. Trích xuất một giá trị duy nhất từ ​​JSON được lồng sâumath, physics, and chemistry columns have been cast to int64.

>>> df.info()
RangeIndex: 3 entries, 0 to 2
Data columns (total 5 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 id 3 non-null object
1 name 3 non-null object
2 math 3 non-null int64
3 physics 3 non-null int64
4 chemistry 3 non-null int64
dtypes: int64(3), object(2)
memory usage: 248.0+ bytes

2. Đọc JSON đơn giản từ URL

3. Danh sách lồng nhau từ đối tượng JSON

URL = 'http://raw.githubusercontent.com/BindiChen/machine-learning/master/data-analysis/027-pandas-convert-json/data/simple.json'df = pd.read_json(URL)

4. Danh sách lồng nhau và Dict từ đối tượng JSON

5. Trích xuất một giá trị duy nhất từ ​​JSON được lồng sâu

3. Danh sách lồng nhau từ đối tượng JSON

4. Danh sách lồng nhau và Dict từ đối tượng JSON

{
"school_name": "ABC primary school",
"class": "Year 1",
"students": [
{
"id": "A001",
"name": "Tom",
"math": 60,
"physics": 66,
"chemistry": 61
},
{
"id": "A002",
"name": "James",
"math": 89,
"physics": 76,
"chemistry": 51
},
{
"id": "A003",
"name": "Jenny",
"math": 79,
"physics": 90,
"chemistry": 78
}]

}

5. Trích xuất một giá trị duy nhất từ ​​JSON được lồng sâu

products = [ item['product'] for item in data['articles']]
0

4. Danh sách lồng nhau và Dict từ đối tượng JSON

5. Trích xuất một giá trị duy nhất từ ​​JSON được lồng sâustudents. How can we flatten the nested list? One solution is to apply a custom function to flatten the values in students.

Bạn có thể quan tâm đến một số bài báo Pandas khác của tôi:

products = [ item['product'] for item in data['articles']]
1

4. Danh sách lồng nhau và Dict từ đối tượng JSON

5. Trích xuất một giá trị duy nhất từ ​​JSON được lồng sâujson module. After that,


mydict =   {
     "article": [

      {
       "product":{
        "details": {
        "color": "blue",
        "size": "small",
        "material": "cotton"
        }
      },
      "availability": "in stock",
      "sku": "2317",
      "cost": "$23"
      },
     {
     "product":{
        "details": {
        "color": "red",
        "size": "large",
        "material": "plastic"
        }
     },
     "availability": "no stock",
     "sku": "4342",
     "cost": "$44"
     }
     ],

   "IDs":[
  {
   "name": "Manager",
   "batchID": 3312312
  }
 ]
}

for item in mydict['article']:
    print(item['product'])
1 is called with the argument
import json

json_data= json.dumps("your_json")

items = json.loads(json_data)
for i in range(0, len(items['article'])):
   print items['article'][i]['product']['details']
0 set to
import json

json_data= json.dumps("your_json")

items = json.loads(json_data)
for i in range(0, len(items['article'])):
   print items['article'][i]['product']['details']
1 to flatten the nested list in students.

Bạn có thể quan tâm đến một số bài báo Pandas khác của tôi:school_name and class. To include them, we can use the argument

import json

json_data= json.dumps("your_json")

items = json.loads(json_data)
for i in range(0, len(items['article'])):
   print items['article'][i]['product']['details']
2 to specify a list of metadata we want in the result.

products = [ item['product'] for item in data['articles']]
2

4. Danh sách lồng nhau và Dict từ đối tượng JSON

4. Danh sách lồng nhau và Dict từ đối tượng JSON

Tiếp theo, hãy để cố gắng đọc một dữ liệu JSON phức tạp hơn, với một danh sách lồng nhau và từ điển lồng nhau.

products = [ item['product'] for item in data['articles']]
3

Chúng tôi sẽ nhận được một giá trịerror khi cố gắng đọc nó bằng


mydict =   {
     "article": [

      {
       "product":{
        "details": {
        "color": "blue",
        "size": "small",
        "material": "cotton"
        }
      },
      "availability": "in stock",
      "sku": "2317",
      "cost": "$23"
      },
     {
     "product":{
        "details": {
        "color": "red",
        "size": "large",
        "material": "plastic"
        }
     },
     "availability": "no stock",
     "sku": "4342",
     "cost": "$44"
     }
     ],

   "IDs":[
  {
   "name": "Manager",
   "batchID": 3312312
  }
 ]
}

for item in mydict['article']:
    print(item['product'])
0.ValueError when trying to read it using

mydict =   {
     "article": [

      {
       "product":{
        "details": {
        "color": "blue",
        "size": "small",
        "material": "cotton"
        }
      },
      "availability": "in stock",
      "sku": "2317",
      "cost": "$23"
      },
     {
     "product":{
        "details": {
        "color": "red",
        "size": "large",
        "material": "plastic"
        }
     },
     "availability": "no stock",
     "sku": "4342",
     "cost": "$44"
     }
     ],

   "IDs":[
  {
   "name": "Manager",
   "batchID": 3312312
  }
 ]
}

for item in mydict['article']:
    print(item['product'])
0.

Để đọc nó có lẽ, chúng ta có thể sử dụng


mydict =   {
     "article": [

      {
       "product":{
        "details": {
        "color": "blue",
        "size": "small",
        "material": "cotton"
        }
      },
      "availability": "in stock",
      "sku": "2317",
      "cost": "$23"
      },
     {
     "product":{
        "details": {
        "color": "red",
        "size": "large",
        "material": "plastic"
        }
     },
     "availability": "no stock",
     "sku": "4342",
     "cost": "$44"
     }
     ],

   "IDs":[
  {
   "name": "Manager",
   "batchID": 3312312
  }
 ]
}

for item in mydict['article']:
    print(item['product'])
1

products = [ item['product'] for item in data['articles']]
4

Hình ảnh của tác giả

Và để bao gồm lớp học, chủ tịch (một tài sản của thông tin) và TEL (một tài sản của liên hệ.info), chúng ta có thể sử dụng đối số

import json

json_data= json.dumps("your_json")

items = json.loads(json_data)
for i in range(0, len(items['article'])):
   print items['article'][i]['product']['details']
2 để chỉ định đường dẫn đến tài sản.class, president (a property of info), and tel (a property of contacts.info), we can use the argument
import json

json_data= json.dumps("your_json")

items = json.loads(json_data)
for i in range(0, len(items['article'])):
   print items['article'][i]['product']['details']
2 to specify the path to the property.

products = [ item['product'] for item in data['articles']]
5

Hình ảnh của tác giả

Và để bao gồm lớp học, chủ tịch (một tài sản của thông tin) và TEL (một tài sản của liên hệ.info), chúng ta có thể sử dụng đối số

import json

json_data= json.dumps("your_json")

items = json.loads(json_data)
for i in range(0, len(items['article'])):
   print items['article'][i]['product']['details']
2 để chỉ định đường dẫn đến tài sản.

Vui lòng xem bài viết sau đây nếu bạn muốn tìm hiểu thêm về Pandas mydict = { "article": [ { "product":{ "details": { "color": "blue", "size": "small", "material": "cotton" } }, "availability": "in stock", "sku": "2317", "cost": "$23" }, { "product":{ "details": { "color": "red", "size": "large", "material": "plastic" } }, "availability": "no stock", "sku": "4342", "cost": "$44" } ], "IDs":[ { "name": "Manager", "batchID": 3312312 } ] } for item in mydict['article']: print(item['product']) 1:

5. Trích xuất một giá trị duy nhất từ ​​JSON được lồng sâumath from the following JSON file.

products = [ item['product'] for item in data['articles']]
6

Pandas


mydict =   {
     "article": [

      {
       "product":{
        "details": {
        "color": "blue",
        "size": "small",
        "material": "cotton"
        }
      },
      "availability": "in stock",
      "sku": "2317",
      "cost": "$23"
      },
     {
     "product":{
        "details": {
        "color": "red",
        "size": "large",
        "material": "plastic"
        }
     },
     "availability": "no stock",
     "sku": "4342",
     "cost": "$44"
     }
     ],

   "IDs":[
  {
   "name": "Manager",
   "batchID": 3312312
  }
 ]
}

for item in mydict['article']:
    print(item['product'])
1 có thể thực hiện hầu hết các công việc khi làm việc với dữ liệu lồng nhau từ tệp JSON. Tuy nhiên, nó làm hỏng toàn bộ dữ liệu lồng nhau khi mục tiêu của bạn thực sự có thể là trích xuất một giá trị. Ví dụ, để trích xuất toán học thuộc tính từ tệp JSON sau.read_json with glom.

products = [ item['product'] for item in data['articles']]
7

Làm thế nào chúng ta có thể làm điều đó hiệu quả hơn? Câu trả lời là sử dụng read_json với glom. is a Python library that allows us to use

import json

json_data= json.dumps("your_json")

items = json.loads(json_data)
for i in range(0, len(items['article'])):
   print items['article'][i]['product']['details']
8 notation to access property from a deeply nested object.

GLOM là một thư viện Python cho phép chúng tôi sử dụng ký hiệu import json json_data= json.dumps("your_json") items = json.loads(json_data) for i in range(0, len(items['article'])): print items['article'][i]['product']['details'] 8 để truy cập thuộc tính từ một đối tượng được lồng sâu.

Sự kết luận

Chức năng Pandas


mydict =   {
     "article": [

      {
       "product":{
        "details": {
        "color": "blue",
        "size": "small",
        "material": "cotton"
        }
      },
      "availability": "in stock",
      "sku": "2317",
      "cost": "$23"
      },
     {
     "product":{
        "details": {
        "color": "red",
        "size": "large",
        "material": "plastic"
        }
     },
     "availability": "no stock",
     "sku": "4342",
     "cost": "$44"
     }
     ],

   "IDs":[
  {
   "name": "Manager",
   "batchID": 3312312
  }
 ]
}

for item in mydict['article']:
    print(item['product'])
0 là một cách nhanh chóng và thuận tiện để chuyển đổi JSON phẳng đơn giản thành một khung dữ liệu gấu trúc. Khi xử lý JSON lồng nhau, chúng ta có thể sử dụng chức năng

mydict =   {
     "article": [

      {
       "product":{
        "details": {
        "color": "blue",
        "size": "small",
        "material": "cotton"
        }
      },
      "availability": "in stock",
      "sku": "2317",
      "cost": "$23"
      },
     {
     "product":{
        "details": {
        "color": "red",
        "size": "large",
        "material": "plastic"
        }
     },
     "availability": "no stock",
     "sku": "4342",
     "cost": "$44"
     }
     ],

   "IDs":[
  {
   "name": "Manager",
   "batchID": 3312312
  }
 ]
}

for item in mydict['article']:
    print(item['product'])
1 tích hợp.

Tôi hy vọng bài viết này sẽ giúp bạn tiết kiệm thời gian trong việc chuyển đổi dữ liệu JSON thành DataFrame. Tôi khuyên bạn nên kiểm tra tài liệu cho API


mydict =   {
     "article": [

      {
       "product":{
        "details": {
        "color": "blue",
        "size": "small",
        "material": "cotton"
        }
      },
      "availability": "in stock",
      "sku": "2317",
      "cost": "$23"
      },
     {
     "product":{
        "details": {
        "color": "red",
        "size": "large",
        "material": "plastic"
        }
     },
     "availability": "no stock",
     "sku": "4342",
     "cost": "$44"
     }
     ],

   "IDs":[
  {
   "name": "Manager",
   "batchID": 3312312
  }
 ]
}

for item in mydict['article']:
    print(item['product'])
0 và

mydict =   {
     "article": [

      {
       "product":{
        "details": {
        "color": "blue",
        "size": "small",
        "material": "cotton"
        }
      },
      "availability": "in stock",
      "sku": "2317",
      "cost": "$23"
      },
     {
     "product":{
        "details": {
        "color": "red",
        "size": "large",
        "material": "plastic"
        }
     },
     "availability": "no stock",
     "sku": "4342",
     "cost": "$44"
     }
     ],

   "IDs":[
  {
   "name": "Manager",
   "batchID": 3312312
  }
 ]
}

for item in mydict['article']:
    print(item['product'])
1 và để biết về những điều khác bạn có thể làm.

Cảm ơn vì đã đọc. Vui lòng kiểm tra sổ ghi chép cho mã nguồn và theo dõi nếu bạn quan tâm đến khía cạnh thực tế của học máy.

  • Bạn có thể quan tâm đến một số bài báo Pandas khác của tôi:
  • Sử dụng chuỗi phương pháp gấu trúc để cải thiện khả năng đọc mã
  • Tất cả pandas json_normalizing () bạn nên biết để làm phẳng json
  • Cách thực hiện sắp xếp tùy chỉnh trên Pandas DataFrame
  • Tất cả các pandas thay đổi () bạn nên biết để phân tích dữ liệu
  • Khi nào nên sử dụng hàm pandas transform ()
  • Gấu trúc concat () thủ thuật bạn nên biết
  • Sự khác biệt giữa Ứng dụng () và biến đổi () trong gấu trúc
  • Tất cả các gấu trúc hợp nhất () bạn nên biết
  • Làm việc với DateTime trong Pandas DataFrame
  • Pandas read_csv () thủ thuật bạn nên biết

4 thủ thuật bạn nên biết các cột Ngày phân tích cú pháp với Pandas Read_csv ()

Nhiều hướng dẫn có thể được tìm thấy trên github của tôi

Làm cách nào để đọc tệp JSON vào DataFrame trong Python?use read_json() function and through it, we pass the path to the JSON file we want to read. Once we do that, it returns a “DataFrame”( A table of rows and columns) that stores data.

Đọc các tệp JSON bằng cách sử dụng gấu trúc để đọc các tệp, chúng tôi sử dụng hàm read_json () và thông qua nó, chúng tôi chuyển đường dẫn đến tệp JSON mà chúng tôi muốn đọc. Khi chúng tôi làm điều đó, nó sẽ trả về một Data DataFrame (một bảng các hàng và cột) lưu trữ dữ liệu.

Làm thế nào để bạn tạo một khung dữ liệu từ tệp JSON trong Python?.

Làm thế nào để làm nó….

Để tạo một dữ liệu gấu trúc từ tệp JSON, trước tiên hãy nhập các thư viện Python mà bạn cần: ....

Tiếp theo, xác định một biến cho tệp JSON và nhập đường dẫn đầy đủ vào tệp: ....

Tiếp theo, hãy tạo DataFrame từ tệp JSON bằng phương thức read_json () do gấu trúc cung cấp ..

Chúng ta có thể chuyển đổi JSON thành DataFrame trong Python không? . Just pass JSON string to the function. It takes multiple parameters, for our case I am using orient that specifies the format of JSON string. This function is also used to read JSON files into pandas DataFrame.

Bạn có thể chuyển đổi JSON thành Pandas DataFrame bằng cách sử dụng read_json (). Chỉ cần chuyển chuỗi JSON cho chức năng. Nó có nhiều tham số, đối với trường hợp của chúng tôi, tôi đang sử dụng Orient, chỉ định định dạng của chuỗi JSON. Hàm này cũng được sử dụng để đọc các tệp JSON vào Pandas DataFrame.

Pandas có thể nhập JSON không?Step 1: You need to create a JSON file that contains JSON strings. Step 2: Save the file with extension . json to create a JSON file. Step 3: Load the JSON file in Pandas using the command below.