Skip to content

49. JSON

Dunsteer edited this page Jan 20, 2021 · 2 revisions

JSON- Java Script Object Notation

JSON je format za razmenu podataka (objekata) koji koristi čitljiv tekst (čitljiv i razumljiv čoveku). Vrlo uobičajen format podataka koji se koristi u asinhronoj komunikaciji servera i pretraživača.
JSON je format koji polako zamenjuje XML jer ima nekolicinu prednosti u odnosu na XML. JSON ne koristi tagove pa stoga ima kraći kod koji je lakši za pisanje i razumljiviji za čitanje. Mada je najbitnija prednost JSON-a u odnosu na XML je ta što se JSON parsira kroz standardnu JavaScript funkciju dok se XML parsira kroz XML parser.

let json = {
    "age": "24",
    "gender": "male",
    "name": "Bob"
};

let jsonArray = [{
    "name": "Bob",
    "age": "48"
},
{
    "name": "Ana",
    "age": "21"
}]

console.log(jsonArray[0].name);

Tipovi podataka u JSON-u:

  • Broj (JavaScript format u pokretnom zarezu sa dvostrukom preciznošću, zavisi od implementacije)
  • String (Unicode format, sa dvostrukim navodnicima)
  • Boolean (true ili false)
  • Niz (uređena sekvenca vrednosti, odvojena zarezima i uokvirena uglastim zagradama; vrednosti ne moraju biti istog tipa)
  • Objekat (neuređena kolekcija ključ:vrednost parova sa ‘:’ karakterom koji razdvaja ključ i vrednost, razdvojeni zarezima i uokvireni vitičastim zagradama. Ključevi moraju biti niske i različiti od ostalih ključeva)
  • null (prazno)

JavaScript i JSON
Pošto je JSON-ova syntax-a derivat JavaScript objektne notacije, veoma lako raditi sa JSON-ovim podacima u JavaScriptu.
Parsiranje je pravljenje JavaScript objekta od JSON-ovog tekstualnog podatka. Iako slični JSON-ov objekat nije JavaScript objekat! Razlike izmedju JSON-ove strukture (ime/vrednost) i objekata kod JavaScripta su:

  • Ime kod JSON-ove strukture može biti bilo koji validan string uključujući i beline dok kod JavaScript-a to nije dozvoljeno
  • Ime kod JSON-ove strukture mora da bude u dvostrukim navodnicima dok kod JavaScripta se ne koriste. Pa je stoga neophodno prebaciti JSON-ov objekat u JavaScript objekat tj. izvršiti parsiranje koje će ukloniti znake navodnika i beline ako postoje.

Primer

var obj = JSON.parse('{ "name":"John", "age":30, "city":"New York"}');

PHP i JSON
PHP podrška za JSON je u vidu dve funkcije:

  • json_encode()
  • json_decode()
    Obe funkcije rade sa UTF-8 kodiranjem.

json_encode() Objekti u PHP-u se mogu konvertovati u JSON format korišćenjem PHP funkcije json_encode();
Ova funkcija uzima niz i vraća string reprezentaciju argumenata u JSON-ovom formatu ili false ako je došlo do greške.

<?php
$myObj->name = "John";
$myObj->age = 30;
$myObj->city = "New York";

$myJSON = json_encode($myObj);

echo $myJSON;
?>

json_decode() Ova funkcija na osnovu string reprezentacije argumenta u JSON-om formatu formira odgovarajući objekat/asocijativni niz ili vraća NULL u slučaju greške.

<?php
header("Content-Type: application/json; charset=UTF-8");
$obj = json_decode($_POST["x"], false);

$conn = new mysqli("myServer", "myUser", "myPassword", "Northwind");
$stmt = $conn->prepare("SELECT name FROM ? LIMIT ?");
$stmt->bind_param("ss", $obj->table, $obj->limit);
$stmt->execute();
$result = $stmt->get_result();
$outp = $result->fetch_all(MYSQLI_ASSOC);

echo json_encode($outp);
?>

50. JSON vs XML

Clone this wiki locally