Arhive etichetă: json

Introducere format JSON

Cunosti formatul JSON? Te intereseaza mai multe informatii despre acesta?

IT-ul este un domeniu care a inceput sa se dezvolte pentru a usura viata oamenilor. Din acest motiv, IT-ul va fi mereu intr-o continua cautare pentru a gasi cele mai bune solutii spre satisfacerea clientilor.

Numele JSON este un acronim pentru JavaScript Object Notation. Acesta un format text pentru date care a fost conceput pentru a putea fi human-readable si usor de transmis intre un server si un client web. Sintaxa acestuia provine din JavaScript, dar chiar si asa poate fi folosit in majoritatea limbajelor de programare, incluzand C# si AS3.

Arrays

Ca si programator web cu experienta, cu siguranta intelegi ce inseamna aranjarea in formatul JSON, dar ca si programator web incepator notiunea s-ar putea sa nu iti fie atat de clara.

Good to know! Aranjarea se refera la o colectie de itemi, fiecare dintre acestia fiind atribuiti unui specific intreg.

De exemplu, in JSON, o etalare a primelor sase litere din alfabet ar putea fi reprezentate in acest fel:

["a", "b", "c", "d", "e", "f"]

Cu siguranta, programatorii web care au mai lucrat in JavaScript si AS3 vor gasi asezarea de mai sus familiara. De asemenea, si in cazul limbjaului de programare C# pentru definirea unui etalon, insiruirea se face in acelasi mod.

Remember! Parantezele drepte se folosesc pentru a descrie etalarea, iar virgulele sunt folosite pentru a separa elementele diferite.

Exista si o modalitate mai usoara pentru ca aceasta aranjare sa fie citita mai usor, si anume:

[
  "a", 
  "b", 
  "c", 
  "d", 
  "e", 
  "f"
]

PS: Se poate observa ca dupa ultimul element nu mai exista nicio virgula.
Etalarea JSON functioneaza si sub forma altor elemente precum false, true sau null, sau chiar numere. Nu exista o scriere tipica, ceea ce ofera libertate pentru a combina tipurile de valori de care ai nevoie. De exemplu:

[
 "apple",
 3,
 912,
 null,
 -7.2222202,
 "#",
 true,
 false
]

Good to know! Pentru a incadra fiecare insiruire ai nevoie de ghilimele duble (“), intrucat cele single (‘) nu sunt permise.

Objects

Un array reprezinta o colectie de elemente in care fiecare element este distribuit intr-o anumita unitate. Un obiect (object) este o colectie de elemente in care fiecare element este distribuit unui sir specific.

Elementele sunt numite valori, iar sirurile folosite pentru a le identifica sunt numite chei (keys). In anumite limbaje de programare aceasta structura de date poate fi gasita sub numele de hash map sau hash table.

Poti folosi objects pentru a utiliza sirurile ca si valori si nu doar keys. De exemplu:

{
 "PHP": 10,
 "CSS": 8,
 "HTML": 10,
 "JavaScript": 9
}

Folosirea JSON cu alte platforme

JSON este un format popular, motiv pentru care acesta functioneaza si cu platforme diferite. Acest mod de functionare este posibil datorita generators si parsers. Acestea sunt unelte si librarii (tool-uri si libraries) care ajuta colaborarea dintre JSON si alte platforme sa functioneze.

Mai exact, generatorii ajuta cu encodarea unui limbaj de programare intr-un altul, iar parsers decodeaza un limbaj de programare pentru a putea fi inteles de un alt limbaj de programare. Ambele optiuni sunt disponibile pentru aproape toate limbajele de programare.

Daca iti doresti sa inveti mai multe despre formatul JSON, sa inveti programare web de la zero, si nu numai, ma poti contacta aici!

 

Anunțuri

Symfony 1.4 – Servicii Web JSON si XML

Servicii Web JSON si XML cu Symfony 1.4

Voi prezenta un exemplu ce va afisa toate adresele de email pentru tabela sf_guard_user in format json si xml.

1. Routing

Pentru a avea acces la webservice, trebuie sa specificam in routing formatele acceptate de webservice.
Ex routing.yml:

users:
  url: /users.:sf_format
  param: { module: user, action: showUsers }
  requirements:
    sf_format: (?:xml|json) 

2. Action

In action introducem urmatorul cod pentru a lua toate obiectele de user, inclusiv adresele de email, intr-o variabila $users_email .


public function executeShowUsers(sfWebRequest $request)
{
  $this->users = Doctrine_Core::getTable('sfGuardUser');
}

PS: Pentru o baza de date mai mare nu uita sa optimizezi query-ul . Pot sa pui LIMIT sau selectezi doar adresa de email ex: „SELECT email_address”

3. Template

Cream 2 fisiere template, primul fisier va servi requestul de xml, iar al doilea request de json.

a) showUsersSuccess.xml.php


<?xml version="1.0" encoding="utf-8"?>
<emails>
<?php foreach ($users as $user): ?>
  <email><?php echo $user->getEmailAddress(); ?></email>
<?php endforeach; ?>
</emails>

b) showUsersSuccess.json.php

<?php $nb = count($users); $i = 0;
foreach ($users as $user): ++$i ?>
<?php echo json_encode($user->getEmailAddress()); ?>
<?php echo $nb == $i ? '' : ',' ?>
<?php endforeach; ?>

4. Testing

a) test xml webservice:
/users.xml

b) test json webservice:
/users.json