Json là gì mà tiêu đề lại ghi là kết nối với mọi ngôn ngữ lại với nhau? Xin thưa là thật sự là vậy, đây là kiểu định dạng dữ liệu phổ biến trong thời đại giờ và tồn tại song song với XML để kết nối các ngôn ngữ lại với nhau.

images

Ví dụ bạn học PHP, bạn của bạn học ASP.net. Vậy làm sao để PHP và ASP.net nói chuyện, trao đổi dữ liệu qua lại lẫn nhau? Giải pháp có phải là cả 2 đưa về một định dạng chung rồi trao đổi với nhau, cũng giống như mỗi quốc gia có một đơn vị tiền tệ riêng, nhưng khi đi ra thế giới thì quy đổi sử dụng chung đồng USD để trao đổi với nhau thì JSON cũng vậy nó là cầu nối của mọi ngôn ngữ với nhau.

Ứng dụng phổ biến của JSON dùng làm API để kết nối ứng dụng Mobile với Websever hay Single Page Application cho ứng dụng Web.

Vậy JSON là gì? JSON được viết tắt của từ ( JavaScript Object Notation ) được viết phục vụ cho ứng dụng trong Javascript và giờ nó đã phổ biến cho mọi ngôn ngữ và có cấu trúc như sau:

{
    "name"  : "value",
    "age"   : 20,
}

Bắt đầu và kết thúc bằng dấu ngoặc nhọn { }, bên trong 2 dấu ngoặc là các cặp thẻ ( bên trái là key, bên phải là value ), mỗi cặp thẻ cách nhau bằng dấu phẩy ,.

Những lưu ý khi sử dụng Json

  • Chuỗi JSON được bắt đầu và kết thúc bằng dấu ngoặc nhọn { }
  • Các Key và Value của JSON phải đặt trong dấu nháy đơn "key": "value".
  • Dùng dấu phẩy , để ngăn cách các cặp thẻ
  • Không đặt key là có số bắt đầu, số, khoảng trắng. Ví dụ: '23abc' : "value", '2' : "value", '23 abc' : "value"

Cấu trúc Json khi dùng thực tế

{
    "name"  : "Huỳnh Tòng",
    "age"   : 20,
    "special_point" : "20 cm"
}

Đây là chuỗi đơn. Còn nếu mảng thì sao? Ta sẽ sử dụng [ ] để gom các chuỗi Json con lại với nhau, và các chuỗi Json con cách nhau cũng là dấu phẩy , trong trường hợp này, các key của các chuỗi Json là 0,1,2,3.

[
    {
        "name"  : "Huỳnh Tòng",
        "age"   : 20,
        "special_point" : "20 cm"
    },
    {
        "name"  : "Tuấn",
        "age"   : 21,
        "special_point" : "18 cm"
    }
]

Còn trường hợp KEY được định dạng cho các chuỗi JSON con thì sao? ví dụ: user_a, user_b

{
    'user_a' : {
        "name"  : "Huỳnh Tòng",
        "age"   : 20,
        "special_point" : "20 cm"
    },
    'user_b' : {
        "name"  : "Tuấn",
        "age"   : 21,
        "special_point" : "18 cm"
    }
}

Rõ ràng là ở trên dùng cặp thẻ [] sao giờ lại đổi thành { } vì chuỗi JSON được định dạng bằng dấu { }, còn [] chỉ giúp bao các thẻ JSON thôi.

[
    { // Lớp học A
        "user_a" : {
            "name"  : "Huỳnh Tòng",
            "age"   : 20,
            "special_point" : "20 cm"
        },
        "user_b" : {
            "name"  : "Tuấn",
            "age"   : 21,
            "special_point" : "18 cm"
        }
    },
    { // Lớp học B
        "user_a" : {
            "name"  : "Huỳnh Tòng",
            "age"   : 20,
            "special_point" : "20 cm"
        },
        "user_b" : {
            "name"  : "Tuấn",
            "age"   : 21,
            "special_point" : "18 cm"
        }
    }
]

Sử dụng Json trong Javascript

Đối với chuỗi JSON đơn giản

<script>
    var user = {
        "name"  : "Huỳnh Tòng",
        "age"   : 20,
        "special_point" : "20 cm"
    };

    var user_name           = user.name;
    var user_age            = user.age;
    var user_special_point  = user.special_point;
</script>

Đối với chuỗi JSON là mảng

<script>
    var user = [
            { // key [0]
                "name"  : "Huỳnh Tòng",
                "age"   : 20,
                "special_point" : "20 cm"
            },
            { // key [1]
                "name"  : "Tuấn",
                "age"   : 21,
                "special_point" : "18 cm"
            }
    ];

    // lấy giá trị key [0]
    var user_name           = user[0].name;
    var user_age            = user[0].age;
    var user_special_point  = user[0].special_point;
</script>

Trường hợp key xác định.

<script>
    var user = {
        "user_a": { // key user_a
            "name"  : "Huỳnh Tòng",
            "age"   : 20,
            "special_point" : "20 cm"
        },
        "user_b": { // key user_b
            "name"  : "Tuấn",
            "age"   : 21,
            "special_point" : "18 cm"
        }
    };
    
    // lấy giá trị key user_a
    var user_name           = user["user_a"].name;
    var user_age            = user["user_a"].age;
    var user_special_point  = user["user_a"].special_point;
</script>

Sử dụng Json trong PHP

Sử dụng json_decode để chuyển đổi JSON sang 2 dạng là Object hoặc Array:

$json_string = <<<DOC
{
    "name"  : "Huỳnh Tòng",
    "age"   : 20,
    "special_point" : "20 cm"
}
DOC;

$arr_php = json_decode($json_string, true); // true nếu muốn Json dạng Array;
print_r($arr);

// Kết quả
$arr_php = [
    "name"  : "Huỳnh Tòng",
    "age"   : 20,
    "special_point" : "20 cm"
];

Cám ơn bạn đã đọc bài viết, hi vọng chút kiến thức nhỏ của mình giúp bạn có khái niệm về JSON.