Json to Object mapping – doplňek/knihova či jiné řešení

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Shampoo
Člen | 38
+
0
-

Před několika dny jsem rozjel komunikaci mobilní s webovou aplikací přes RestApi (Drahak/Restful) a nyní potřebuji namapovat přijatý json na object vlastní třídy.

Rád bych použil něco podobného PHP knihovny JsonMapper. Existuje aleternativa pro Nette, nebo lze includovat přímo PHP knihovnu?

Nerad bych to dělal ručně přes Nette\Utils\Json decode().

Díky moc

Michal Vyšinský
Člen | 608
+
+1
-

Jistě tě jde použít jakákoliv knihovna. Nette je pořád jen php :)

Doporučoval bych si třídu JsonMapper zaregistrovat jako službu a hezky si ji injektnout kde je potřeba.

Editoval Michal Vyšinský (10. 6. 2015 8:48)

Shampoo
Člen | 38
+
0
-

Michal Vyšinský napsal(a):

Jistě tě jde použít jakákoliv knihovna. Nette je pořád jen php :)

Doporučoval bych si třídu JsonMapper zaregistrovat jako službu a hezky si ji injektnout kde je potřeba.

Díky moc za info, nicméně jsem v Nette nováček a nějak si nevím rady, jak knihovnu zaregistrovat jako službu.
Vím, že registrace probíhá v config souboru (config.neon) v sekci services, ale nevím si rady s cestou k dané třídě.

Třídu jsem zkopíroval do vendor\jsonmapper\src\JsonMapper.php Našel jsem tutoriál, kde je registrace pospána, nicméně mi dané cesty vůbec nesedí.

Pavel Kravčík
Člen | 1195
+
0
-

Instaluj přes composer do Vendor. Nebo si jí dej do /lib/ v /app/ a nalinkuje Ti jí RobotLoader.

Michal Vyšinský
Člen | 608
+
0
-

Ano instaluj pomocí composeru. Ruční přidávání do libs bych radil jen v případě, že knihovna nepodporuje composer – pak bych ale hledal jinou knihovnu.

Po instalaci přidej do svého configu:

services:
    - JsonFormatter

a pak si ji můžeš injektnout do jiné služby přes konstruktor

Editoval Michal Vyšinský (10. 6. 2015 11:04)

Shampoo
Člen | 38
+
0
-

Od čeho se přesně odvíjí jméno té service? Pokud dám do configu -JsonFormatter, jak Nette pozná, že se jedná o knihovnu JsonMapper? Pomocí toho injectu?

Díky za vysvětlení a za rady.

Michal Vyšinský
Člen | 608
+
0
-

dává se tam název třídy

Pavel Kravčík
Člen | 1195
+
0
-

Michal Vyšinský napsal(a):

dává se tam název třídy

A její namespace.