JSONApi

=================================================== =================================================== =================================================== ===========

O modalitate simpla de a implementa specificatiile JSONApi pentru a converti modelele in Json si Json in modele.

INSTALARE

Adaugati aceasta dependenta din jCenter:

compilati „com.gustavofao: JSONApi: $ {latestVersion}”

Daca instalarea nu reuseste, adaugati aceasta linie la nivelul de nivel superior:

maven {url “http://dl.bintray.com/faogustavo/maven”}

UTILIZARE

Primul pas pentru a utiliza biblioteca este sa initiati deserializatorul cu clasele dvs. Pentru a arata cum functioneaza, vom folosi JSON implicit, care se afla pe pagina de pornire jsonapi.org si in folderul brut.

PRIMUL PAS – Creati-va modelele

Toate modelele care urmeaza sa fie convertite trebuie sa:

  • Mosteniti de la Resurse
  • Si aveti adnotarea de tip.

NOTA:

  • Nu includeti un nume de camp „id” sau „tip” deoarece aceste doua campuri sunt ocupate de Resurse si Tip
  • Includeti un constructor de argumente gol / zero
import com.gustavofao.jsonapi.Annotatios.Type; import com.gustavofao.jsonapi.Models.Resource; @Type (“comments”) public class Comentariul extinde Resurse {private String body; autor persoana fizica; / * Important: Daca nu lasati acest lucru, demersionarea ar putea esua “… nu are niciun constructor de argumente zero” Daca utilizati proguard minify, adaugati regula mentionata la sfarsitul acestei pagini. * / public Comment () {} public String getBody () {return body; } public void setBody (String body) {this.body = body; } public Person getPerson () {returneaza autorul; } public void setPerson (Autor persoana) {this.author = author; }}

AL DOILEA PAS – Instantati JSONApiConverter

JSONApiConverter trebuie instantiat cu toate modelele dumneavoastra.

JSONApiConverter api = new JSONApiConverter (Article.class, Comment.class, Person.class);

PASUL TREI – Serializati sau deserializati

SERIALIZATI IN JSON

Pentru a serializa un obiect, acesta trebuie sa fie o instanta sau sa mosteneasca de la Resursa si trebuie transmis ca parametru catre Json . Intoarcerea va fi un sir cu JSON.

Articol articol = articol nou (); // // SETATI AICI VALORI // Sir jsonValue = api.toJson (articol);

LINKURI DE AVERTIZARE CAMPURILE NU vor fi serializate. MAI LUCREZ PENTRU URMATOarea VERSIUNE.

DESERIALIZATI DE LA JSON

Pentru a deserializa JSON, trebuie sa-l treceti ca parametru pentru metoda fromJson . Returnarea va fi un JSONApiObject.

JSONApiObject <Article> obj = api.fromJson (json); if (obj.getData (). size ()> 0) {// Succes if (obj.getData (). size () == 1) {// Articol unic articol articol = obj.getData (0); } else {// Lista obiectelor Lista <Article> resurse = obj.getData (); }} else {// Eroare sau date goale}

DATELE DE AVERTISMENT VOR FI INTOTDEAUNA CA LISTA. TREBUIE SA VERIFICATI DACA EXISTA NUMAI UNUL SAU MAI MULTE. LUCREZ SI PENTRU EL.

SFATURI

RELATIE DE LA UN LA MULTI

Pentru a gestiona relatia unu-la-multi trebuie sa utilizati JSONList cu tipul obiectului. Exemplul de mai jos.

SCHIMBATI NUMELE SERIALIZARII

Pentru a schimba numele obiectului de pe JSON, puteti utiliza Numele Serial Adnotare din campul dvs. Exemplul de mai jos.

Ignorati campurile

Pentru a ignora campurile modelului, trebuie sa utilizati Adnotarea exclusa pe campul dvs. Exemplul de mai jos.

import com.gustavofao.jsonapi.Annotatios.Exclus; import com.gustavofao.

mamadas en la playa maduras buenorras
le pilla pajeandose tetonas gratis
porno gratis viejas porno fuerte
metiendo mano en el bus fakings.tv
incesto real xxx jovencitasxxx
sexo maduras españolas se folla al
me corro sin avisar zoofila
enanas tetonas porno abuela
follar con jovencitas masaje final feliz
follando cincuentonas porno sin censura
videos gays españoles se folla a su hermana
vidio pirno maduras haciendo pajas
hombres corriendose videos gays españoles
tetas playa porno hablado español
viejas con jovenes follando jovencitos desnudos
tangas xxx xxxhd
abuelas porno españolas masajes eroticos chinos
peliculas porno de incesto descargar peliculas porno
www.sex videos prono
me follo a la vecina vecinas cachondas

jsonapi.Annotatios.SerialName; import com.gustavofao.jsonapi.Annotatios.Type; import com.gustavofao.jsonapi.Models.JSONList; import com.gustavofao.jsonapi.Models.Resource; @Type (“articole”) public class Articolul extinde Resource {private String title; private JSONList <Comment> comentarii; @ Fara sir privat privat; @SerialName („autor”) persoana Persoana privata; public String getTitle () {return title; } public void setTitle (String title) {this.title = title; } public Person getPerson () {return person; } public void setPerson (Persoana persoana) {this.person = person; } public JSONList <Comment> getComments () {returneaza comentarii; } public void setComments (JSONList <Comment> comentarii) {this.comments = comentarii; }}

TIP MULTIPL PENTRU ACELASI OBIECT

Cand aveti diferite tipuri pentru acelasi obiect, puteti utiliza adnotarea @Types (valoarea Sirului []).

@Types ({“test”, “test02”})

METADATE

Meta datele pot fi preluate din JSONApiObject folosind getMeta ()

JSONApiObject <Article> obj = api.fromJson (json); JSONObject meta = obj.getMeta ();

ERORI

Documentatia despre erori poate fi gasita in acest link. Pentru a face fata acestuia trebuie sa verificati JSONApiObject daca are Erori () .

JSONApiObject obj = api.fromJson (json); if (obj.hasErrors ()) {List <ErrorModel> errorList = obj.getErrors (); // Fa ceva cu erorile} else {// Gestioneaza conversia cu succes}

Atributele de la ErrorModel sunt:

statutul de sir privat; titlu de sir privat; detaliu de sir privat; sursa privata ErrorSource;

Si din ErrorSource:

indicator String privat; parametru private String;

Retrofit

Biblioteca are integrare cu Retrofit. Pentru a utiliza trebuie sa treceti JSONConverterFactory ca converterFactory si

Retrofit retrofit = new Retrofit.Builder () .addConverterFactory (JSONConverterFactory.create (Article.class, Comment.class, Person.class)) .baseUrl (url) .build ();

Toate cererile trebuie sa fie cu parametrul de la serverul JSONApiObject .

Apelati <JSONApiObject> obj = service.testRequest (); obj.enqueue (callback nou <JSONApiObject> () {@Override public void onResponse (Apelare <JSONApiObject> apel, Raspuns <JSONApiObject> raspuns) {if (response.body ()! = null) {if (response.body () .hasErrors ()) {List <ErrorModel> errorList = response.body (). getErrors (); // Fa ceva cu erorile} else {if (response.body (). getData (). size ()> 0) {Toast.makeText (MainActivity.this, “Obiect cu date”, Toast.LENGTH_SHORT) .show ();} else {Toast.makeText (MainActivity.this, “No Items”, Toast.LENGTH_SHORT) .show ();} }} else {try {JSONApiObject object = App.getConverter (). fromJson (response.errorBody (). string ()); handleErrors (object.getErrors ());} catch (IOException e) {Toast.makeText (MainActivity. acesta, „Corp gol”, Toast.LENGTH_SHORT). spectacol(); }}} @Override public void onFailure (Call <JSONApiObject> call, Throwable t) {Toast.makeText (MainActivity.this, “Fail”, Toast.LENGTH_SHORT) .show (); }});

HARTE DE SERIALIZARE

In acest moment putem face maparea listata mai sus (java -> Json):

  • String -> String
  • Data -> Sir
  • char -> String
  • dublu -> Dublu
  • plutitor -> Dublu
  • int -> Intreg
  • boolean -> Boolean
  • Harta -> JSONObject
  • Resouce -> Relationship + Include

PROGUARD

Daca aveti minifyEnabled pe proguard, trebuie sa adaugati aceasta regula in fisierul proguard. In acest fel, nu veti primi o eroare cu mesajul „YourResource are no zero argument constructor”.

-keep public class * extinde com.gustavofao.jsonapi.Models.Resource

Pasii urmatori

  • Configurati CI si adaugati insigna de construire
  • Adaugati teste unitare
  • Folositi generice pentru a obtine valoarea
  • Faceti resurse variabile protejate # 21
  • Utilizati decodoare de atribute personalizate
  • Creati mai multe mostre
  • Analizati JSONObjecte si tablouri / liste sub atributele # 12

Licenta

Copyright 2016 Gustavo Fao. Toate drepturile rezervate. Licentiat sub licenta Apache, versiunea 2.0 („Licenta”); nu puteti utiliza acest fisier decat in ​​conformitate cu licenta. Puteti obtine o copie a Licentei la http://www.apache.org/licenses/LICENSE-2.0 Cu exceptia cazului in care este cerut de legea aplicabila sau este convenit in scris, software-ul distribuit in baza Licentei este distribuit pe o BAZA “CA ESTE”, FARA GARANTII SAU CONDITII DE ORICE TIP, fie expres, fie implicit. Consultati licenta pentru limbajul specific care reglementeaza permisiunile si limitarile din licenta.