Hướng dẫn how do i extract data from json with php? - làm cách nào để trích xuất dữ liệu từ json bằng php?

Giới thiệu

Trước hết bạn có một chuỗi. JSON không phải là một mảng, một đối tượng hoặc cấu trúc dữ liệu. JSON là một định dạng tuần tự hóa dựa trên văn bản - vì vậy là một chuỗi lạ mắt, nhưng vẫn chỉ là một chuỗi. Giải mã nó trong PHP bằng cách sử dụng

$json = '
{
    "type": "donut",
    "name": "Cake"
}';

$yummy = json_decode($json);

echo $yummy->type; //donut
3.

 $data = json_decode($json);

Trong đó bạn có thể tìm thấy:

  • Scalars: String, Int, Floats và Bools
  • nulls (một loại đặc biệt của riêng nó)
  • Các loại hỗn hợp: Đối tượng và mảng.

Đây là những điều có thể được mã hóa trong JSON. Hoặc chính xác hơn, đây là các phiên bản của PHP về những thứ có thể được mã hóa trong JSON.

Không có gì đặc biệt về họ. Chúng không phải là "đối tượng JSON" hay "mảng JSON." Bạn đã giải mã JSON - bây giờ bạn có các loại PHP cơ bản hàng ngày.

Các đối tượng sẽ là các trường hợp của STDCLASS, một lớp tích hợp chỉ là một điều chung không quan trọng ở đây.


Truy cập các thuộc tính đối tượng

Bạn truy cập các thuộc tính của một trong các đối tượng này giống như cách bạn làm cho các thuộc tính phi tĩnh công khai của bất kỳ đối tượng nào khác, ví dụ:

$json = '
{
    "type": "donut",
    "name": "Cake"
}';

$yummy = json_decode($json);

echo $yummy->type; //donut
4.

$json = '
{
    "type": "donut",
    "name": "Cake"
}';

$yummy = json_decode($json);

echo $yummy->type; //donut

Truy cập các yếu tố mảng

Bạn truy cập các yếu tố của một trong các mảng này giống như cách bạn làm cho bất kỳ mảng nào khác, ví dụ:

$json = '
{
    "type": "donut",
    "name": "Cake"
}';

$yummy = json_decode($json);

echo $yummy->type; //donut
5.

$json = '
[
    "Glazed",
    "Chocolate with Sprinkles",
    "Maple"
]';

$toppings = json_decode($json);

echo $toppings[1]; //Chocolate with Sprinkles

Lặp lại nó với

$json = '
{
    "type": "donut",
    "name": "Cake"
}';

$yummy = json_decode($json);

echo $yummy->type; //donut
6.

foreach ($toppings as $topping) {
    echo $topping, "\n";
}

Sô cô la tráng men với rắc maple
Chocolate with Sprinkles
Maple

Hoặc gây rối với bất kỳ chức năng mảng tích hợp nào của bazillion.


Truy cập các vật phẩm lồng nhau

Các thuộc tính của các đối tượng và các phần tử của mảng có thể là nhiều đối tượng và/hoặc mảng hơn - bạn chỉ có thể tiếp tục truy cập vào các thuộc tính và thành viên của chúng như bình thường, ví dụ:

$json = '
{
    "type": "donut",
    "name": "Cake"
}';

$yummy = json_decode($json);

echo $yummy->type; //donut
7.

$json = '
{
    "type": "donut",
    "name": "Cake",
    "toppings": [
        { "id": "5002", "type": "Glazed" },
        { "id": "5006", "type": "Chocolate with Sprinkles" },
        { "id": "5004", "type": "Maple" }
    ]
}';

$yummy = json_decode($json);

echo $yummy->toppings[2]->id; //5004

Chuyển $json = ' { "type": "donut", "name": "Cake" }'; $yummy = json_decode($json); echo $yummy->type; //donut 8 làm đối số thứ hai cho json_decode ()

Khi bạn làm điều này, thay vì các đối tượng, bạn sẽ nhận được các mảng kết hợp - các mảng có chuỗi cho các khóa. Một lần nữa bạn truy cập các yếu tố như bình thường, ví dụ:

$json = '
{
    "type": "donut",
    "name": "Cake"
}';

$yummy = json_decode($json);

echo $yummy->type; //donut
9.

$json = '
{
    "type": "donut",
    "name": "Cake",
    "toppings": [
        { "id": "5002", "type": "Glazed" },
        { "id": "5006", "type": "Chocolate with Sprinkles" },
        { "id": "5004", "type": "Maple" }
    ]
}';

$yummy = json_decode($json, true);

echo $yummy['toppings'][2]['type']; //Maple

Truy cập các mục mảng kết hợp

Khi giải mã một đối tượng JSON cho mảng PHP kết hợp, bạn có thể lặp lại cả các khóa và giá trị bằng cách sử dụng cú pháp

$json = '
[
    "Glazed",
    "Chocolate with Sprinkles",
    "Maple"
]';

$toppings = json_decode($json);

echo $toppings[1]; //Chocolate with Sprinkles
0, ví dụ

$json = '
{
    "foo": "foo value",
    "bar": "bar value",
    "baz": "baz value"
}';

$assoc = json_decode($json, true);
foreach ($assoc as $key => $value) {
    echo "The value of key '$key' is '$value'", PHP_EOL;
}

Bản in

Giá trị của khóa 'foo' là 'giá trị foo' Giá trị của khóa 'thanh' là 'giá trị thanh' Giá trị của khóa 'Baz' là 'giá trị Baz'
The value of key 'bar' is 'bar value'
The value of key 'baz' is 'baz value'


Không biết cách cấu trúc dữ liệu

Đọc tài liệu cho bất cứ điều gì bạn đang nhận được JSON.

Nhìn vào JSON - nơi bạn thấy dấu ngoặc xoăn

$json = '
[
    "Glazed",
    "Chocolate with Sprinkles",
    "Maple"
]';

$toppings = json_decode($json);

echo $toppings[1]; //Chocolate with Sprinkles
1 mong đợi một đối tượng, nơi bạn thấy dấu ngoặc vuông
$json = '
[
    "Glazed",
    "Chocolate with Sprinkles",
    "Maple"
]';

$toppings = json_decode($json);

echo $toppings[1]; //Chocolate with Sprinkles
2 mong đợi một mảng.

Nhấn dữ liệu được giải mã bằng

$json = '
[
    "Glazed",
    "Chocolate with Sprinkles",
    "Maple"
]';

$toppings = json_decode($json);

echo $toppings[1]; //Chocolate with Sprinkles
3:

$json = '
{
    "type": "donut",
    "name": "Cake",
    "toppings": [
        { "id": "5002", "type": "Glazed" },
        { "id": "5006", "type": "Chocolate with Sprinkles" },
        { "id": "5004", "type": "Maple" }
    ]
}';

$yummy = json_decode($json);

print_r($yummy);

và kiểm tra đầu ra:

stdClass Object
(
    [type] => donut
    [name] => Cake
    [toppings] => Array
        (
            [0] => stdClass Object
                (
                    [id] => 5002
                    [type] => Glazed
                )

            [1] => stdClass Object
                (
                    [id] => 5006
                    [type] => Chocolate with Sprinkles
                )

            [2] => stdClass Object
                (
                    [id] => 5004
                    [type] => Maple
                )

        )

)

Nó sẽ cho bạn biết nơi bạn có đối tượng, nơi bạn có mảng, cùng với tên và giá trị của các thành viên của họ.

Nếu bạn chỉ có thể đi xa hơn trước khi bạn bị lạc - đi xa đến thế và đánh vào đó với

$json = '
[
    "Glazed",
    "Chocolate with Sprinkles",
    "Maple"
]';

$toppings = json_decode($json);

echo $toppings[1]; //Chocolate with Sprinkles
3:

print_r($yummy->toppings[0]);
$json = '
{
    "type": "donut",
    "name": "Cake"
}';

$yummy = json_decode($json);

echo $yummy->type; //donut
0

Hãy xem nó trong JSON Explorer tương tác tiện dụng này.

Chia vấn đề thành các mảnh dễ dàng hơn để quấn đầu bạn.


$json = ' { "type": "donut", "name": "Cake" }'; $yummy = json_decode($json); echo $yummy->type; //donut 3 Trả về $json = ' [ "Glazed", "Chocolate with Sprinkles", "Maple" ]'; $toppings = json_decode($json); echo $toppings[1]; //Chocolate with Sprinkles 6

Điều này xảy ra bởi vì một trong hai

  1. JSON bao gồm hoàn toàn chỉ là,
    $json = '
    [
        "Glazed",
        "Chocolate with Sprinkles",
        "Maple"
    ]';
    
    $toppings = json_decode($json);
    
    echo $toppings[1]; //Chocolate with Sprinkles
    
    6.
  2. JSON không hợp lệ - kiểm tra kết quả của
    $json = '
    [
        "Glazed",
        "Chocolate with Sprinkles",
        "Maple"
    ]';
    
    $toppings = json_decode($json);
    
    echo $toppings[1]; //Chocolate with Sprinkles
    
    8 hoặc đặt nó qua một cái gì đó như JsonLint.
  3. Nó chứa các yếu tố lồng vào hơn 512 cấp độ sâu. Độ sâu tối đa mặc định này có thể được ghi đè bằng cách chuyển một số nguyên làm đối số thứ ba cho
    $json = '
    {
        "type": "donut",
        "name": "Cake"
    }';
    
    $yummy = json_decode($json);
    
    echo $yummy->type; //donut
    
    3.

Nếu bạn cần thay đổi độ sâu tối đa, bạn có thể giải quyết vấn đề sai. Tìm hiểu lý do tại sao bạn nhận được dữ liệu được lồng sâu như vậy (ví dụ: dịch vụ bạn đang truy vấn tạo JSON có lỗi) và điều đó không xảy ra.


Tên thuộc tính đối tượng chứa một ký tự đặc biệt

Đôi khi bạn sẽ có một tên thuộc tính đối tượng chứa một cái gì đó giống như dấu gạch nối

foreach ($toppings as $topping) {
    echo $topping, "\n";
}
0 hoặc tại dấu hiệu
foreach ($toppings as $topping) {
    echo $topping, "\n";
}
1 không thể được sử dụng trong một định danh theo nghĩa đen. Thay vào đó, bạn có thể sử dụng một chuỗi theo nghĩa đen trong niềng răng xoăn để giải quyết nó.

$json = '
{
    "type": "donut",
    "name": "Cake"
}';

$yummy = json_decode($json);

echo $yummy->type; //donut
1

Nếu bạn có một số nguyên làm thuộc tính, hãy xem: Làm thế nào để truy cập các thuộc tính đối tượng với các tên như số nguyên? như tài liệu tham khảo.


Ai đó đặt json vào json của bạn

Thật là nực cười nhưng nó xảy ra - có JSON được mã hóa dưới dạng một chuỗi trong JSON của bạn. Giải mã, truy cập chuỗi như bình thường, giải mã điều đó và cuối cùng nhận được những gì bạn cần.

$json = '
{
    "type": "donut",
    "name": "Cake"
}';

$yummy = json_decode($json);

echo $yummy->type; //donut
2

Dữ liệu không phù hợp với bộ nhớ

Nếu JSON của bạn quá lớn đối với

$json = '
{
    "type": "donut",
    "name": "Cake"
}';

$yummy = json_decode($json);

echo $yummy->type; //donut
3 để xử lý ngay lập tức, mọi thứ bắt đầu trở nên khó khăn. Nhìn thấy:

  • Xử lý các tệp JSON lớn trong PHP
  • Cách lặp lại đúng cách thông qua tệp JSON lớn

Làm thế nào để sắp xếp nó

Xem: Tham khảo: Tất cả các cách cơ bản để sắp xếp các mảng và dữ liệu trong PHP.

Làm thế nào tôi có thể nhận được dữ liệu thô từ JSON trong PHP?

Để nhận chuỗi JSON, chúng tôi có thể sử dụng php: // nhập vào cùng với hàm file_get_contents () giúp chúng tôi nhận dữ liệu JSON dưới dạng tệp và đọc nó thành một chuỗi. Sau đó, chúng ta có thể sử dụng hàm json_decode () để giải mã chuỗi JSON.use the “php://input” along with the function file_get_contents() which helps us receive JSON data as a file and read it into a string. Later, we can use the json_decode() function to decode the JSON string.

Giá trị JSON được truy cập như thế nào trong PHP?

PHP và JSON..
Hàm json_encode () được sử dụng để mã hóa định dạng JSON cho định dạng JSON ..
Hàm json_decode () được sử dụng để giải mã đối tượng JSON thành đối tượng PHP hoặc mảng kết hợp ..
Hàm json_decode () trả về một đối tượng theo mặc định. ....
Bạn cũng có thể lặp qua các giá trị với vòng lặp foreach ():.

Chúng ta có thể trích xuất dữ liệu từ tệp JSON không?

Để trích xuất các thuộc tính tên và dự án từ chuỗi JSON, hãy sử dụng chức năng JSON_EXTRACT như trong ví dụ sau.Hàm JSON_EXTRACT lấy cột chứa chuỗi JSON và tìm kiếm nó bằng biểu thức giống JsonPath với dấu chấm.ký hiệu.JsonPath thực hiện một đường truyền cây đơn giản.use the json_extract function as in the following example. The json_extract function takes the column containing the JSON string, and searches it using a JSONPath -like expression with the dot . notation. JSONPath performs a simple tree traversal.

Làm thế nào tôi có thể phân tích JSON vào bảng HTML bằng PHP?

Để sử dụng hàm PHP File_Get_Contents (), chúng tôi có thể đọc một tệp và truy xuất dữ liệu có trong tệp JSON.Sau khi lấy dữ liệu cần chuyển đổi định dạng JSON thành định dạng mảng.Sau đó, với việc sử dụng câu lệnh Looping sẽ hiển thị dưới dạng định dạng bảng.