2017-08-22 1 views
-2
{ 
    "-KrwJP0nYf1IUqY-YdXo": { 
     "desc": "pdf desc 4", 
     "downloadUrl": "https://firebasestorage.googleapis.com/v0/b/fireapp-a889c.appspot.com/o/PdfFile%2F1503177372?alt=media&token=36436f90-8a90-42f2-bf9d-35ac121b9ca7", 
     "title": "pdf 4", 
     "uid": "0HEj0gbzmcgqNc9nSXAIHqjo15p1", 
     "username": "userq" 
    }, 
    "-KrwK2DSmF7UA-SD-VOM": { 
     "desc": "asdadadad", 
     "downloadUrl": "https://firebasestorage.googleapis.com/v0/b/fireapp-a889c.appspot.com/o/PdfFile%2F37?alt=media&token=701d3aca-8e9e-48c8-ae45-5aab4b4c37ad", 
     "title": "adsasdadad", 
     "uid": "0HEj0gbzmcgqNc9nSXAIHqjo15p1", 
     "username": "userq" 
    }, 
    "-KrwL69kWDatEftRf3C0": { 
     "desc": "sdfsfd", 
     "downloadUrl": "https://firebasestorage.googleapis.com/v0/b/fireapp-a889c.appspot.com/o/PdfFile%2F1503177856?alt=media&token=e0dea2ff-8311-4c00-9c1b-6402cb69e929", 
     "title": "sdf", 
     "uid": "0HEj0gbzmcgqNc9nSXAIHqjo15p1", 
     "username": "userq" 
    }, 
    "-KrwLdA21nomZUToFOjh": { 
     "desc": "gdfgdfgdfgdfg", 
     "downloadUrl": "https://firebasestorage.googleapis.com/v0/b/fireapp-a889c.appspot.com/o/PdfFile%2F1503177996?alt=media&token=7d15cb11-f7c0-4086-aefe-5c39964ab83f", 
     "title": "dfgdfgdfghdf", 
     "uid": "0HEj0gbzmcgqNc9nSXAIHqjo15p1", 
     "username": "userq" 
    } 
} 

Son texte json. Comment puis-je l'analyse avec retrofit dans Android. Il a un nom d'objet unique.Comment puis-je analyser la sortie Firebird JSON

Mon adresse JSON: https://fireapp-a889c.firebaseio.com/PdfContent.json

+0

Essayez ce site: http: // www .jsonschema2pojo.org/ –

+0

Je connais pojo, mais pojo crée combien y a-t-il de nom d'objet unique. – spoiler

+0

après avoir analysé vous pouvez changer les noms des champs, il suffit de laisser le SerializedName Annoation. –

Répondre

0
String jsonData = "{\n" + 
      " \"-KrwJP0nYf1IUqY-YdXo\": {\n" + 
      "  \"desc\": \"pdf desc 4\",\n" + 
      "  \"downloadUrl\": \"https://firebasestorage.googleapis.com/v0/b/fireapp-a889c.appspot.com/o/PdfFile%2F1503177372?alt=media&token=36436f90-8a90-42f2-bf9d-35ac121b9ca7\",\n" + 
      "  \"title\": \"pdf 4\",\n" + 
      "  \"uid\": \"0HEj0gbzmcgqNc9nSXAIHqjo15p1\",\n" + 
      "  \"username\": \"userq\"\n" + 
      " },\n" + 
      " \"-KrwK2DSmF7UA-SD-VOM\": {\n" + 
      "  \"desc\": \"asdadadad\",\n" + 
      "  \"downloadUrl\": \"https://firebasestorage.googleapis.com/v0/b/fireapp-a889c.appspot.com/o/PdfFile%2F37?alt=media&token=701d3aca-8e9e-48c8-ae45-5aab4b4c37ad\",\n" + 
      "  \"title\": \"adsasdadad\",\n" + 
      "  \"uid\": \"0HEj0gbzmcgqNc9nSXAIHqjo15p1\",\n" + 
      "  \"username\": \"userq\"\n" + 
      " },\n" + 
      " \"-KrwL69kWDatEftRf3C0\": {\n" + 
      "  \"desc\": \"sdfsfd\",\n" + 
      "  \"downloadUrl\": \"https://firebasestorage.googleapis.com/v0/b/fireapp-a889c.appspot.com/o/PdfFile%2F1503177856?alt=media&token=e0dea2ff-8311-4c00-9c1b-6402cb69e929\",\n" + 
      "  \"title\": \"sdf\",\n" + 
      "  \"uid\": \"0HEj0gbzmcgqNc9nSXAIHqjo15p1\",\n" + 
      "  \"username\": \"userq\"\n" + 
      " },\n" + 
      " \"-KrwLdA21nomZUToFOjh\": {\n" + 
      "  \"desc\": \"gdfgdfgdfgdfg\",\n" + 
      "  \"downloadUrl\": \"https://firebasestorage.googleapis.com/v0/b/fireapp-a889c.appspot.com/o/PdfFile%2F1503177996?alt=media&token=7d15cb11-f7c0-4086-aefe-5c39964ab83f\",\n" + 
      "  \"title\": \"dfgdfgdfghdf\",\n" + 
      "  \"uid\": \"0HEj0gbzmcgqNc9nSXAIHqjo15p1\",\n" + 
      "  \"username\": \"userq\"\n" + 
      " }\n" + 
      "}"; 
    try { 
     JSONObject object = new JSONObject(jsonData); 
     Iterator<String> iterator = object.keys(); 
     while (iterator.hasNext()) { 
      JSONObject obj = object.getJSONObject(iterator.next()); 
      Log.d("TAG", obj.toString()); 
     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

ici il vous suffit de passer la Votre chaîne JSON en jsonData , vous obtenez une sortie comme,

Sortie:

{"desc":"pdf desc 4","downloadUrl":"https:\/\/firebasestorage.googleapis.com\/v0\/b\/fireapp-a889c.appspot.com\/o\/PdfFile%2F1503177372?alt=media&token=36436f90-8a90-42f2-bf9d-35ac121b9ca7","title":"pdf 4","uid":"0HEj0gbzmcgqNc9nSXAIHqjo15p1","username":"userq"} 
{"desc":"asdadadad","downloadUrl":"https:\/\/firebasestorage.googleapis.com\/v0\/b\/fireapp-a889c.appspot.com\/o\/PdfFile%2F37?alt=media&token=701d3aca-8e9e-48c8-ae45-5aab4b4c37ad","title":"adsasdadad","uid":"0HEj0gbzmcgqNc9nSXAIHqjo15p1","username":"userq"} 
{"desc":"sdfsfd","downloadUrl":"https:\/\/firebasestorage.googleapis.com\/v0\/b\/fireapp-a889c.appspot.com\/o\/PdfFile%2F1503177856?alt=media&token=e0dea2ff-8311-4c00-9c1b-6402cb69e929","title":"sdf","uid":"0HEj0gbzmcgqNc9nSXAIHqjo15p1","username":"userq"} 
{"desc":"gdfgdfgdfgdfg","downloadUrl":"https:\/\/firebasestorage.googleapis.com\/v0\/b\/fireapp-a889c.appspot.com\/o\/PdfFile%2F1503177996?alt=media&token=7d15cb11-f7c0-4086-aefe-5c39964ab83f","title":"dfgdfgdfghdf","uid":"0HEj0gbzmcgqNc9nSXAIHqjo15p1","username":"userq"} 
+0

Merci, Comment puis-je rénover cela? Classe de modèle et API de rappel? – spoiler

+0

vous devez gérer votre base de données Firebase correctement –

+0

mais je pense que ce d'une façon facile parce que si vous utilisez retrofit puis revenir en fin de compte le JSONObject –

0

EDIT

Ajouter la dépendance dans votre fichier build.gradle

compile 'io.reactivex:rxandroid:1.2.1' 
compile 'io.reactivex:rxjava:1.2.4' 
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0' 

Comme JSON firebase est une carte Map<String,Object> vous pouvez récupérer des données en suivant façon

public final class ApiService { 
private static Retrofit retrofit = new Retrofit.Builder() 
     .baseUrl("https://fireapp-a889c.firebaseio.com/") 
     .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) 
     .build(); 

public static Retrofit getRetrofit() { 
    return retrofit; 
} 
} 

Interface de demande:

public interface FirebaseApi { 
    @GET("PdfContent.json") 
    Observable<Map<String, Object>> getFirebaseResponse(); 
} 

Et puis l'appeler où vous avez besoin:

ApiService.getRetrofit().create(FirebaseApi.class) 
      .getFirebaseResponse() 
      .subscribeOn(Schedulers.newThread()) 
      .observeOn(AndroidSchedulers.mainThread()) 
      .subscribe(new Observer<Map<String, Object>>() { 
       @Override 
       public void onCompleted() { 

       } 

       @Override 
       public void onError(Throwable e) { 
       } 

       @Override 
       public void onNext(Map<String, Object> response) { 
        Log.e("TAG", "onNext: " + response); 
       } 
      }); 

Il retourne exactement ce dont vous avez besoin. Après cela, vous pouvez utiliser itérateur pour convertir la date de sortie dans la liste des éléments avec les identifiants appropriés.

+0

oui rétrofit obligatoire malheureusement – spoiler

+0

@spoiler J'ai mis à jour ma réponse –

+0

Impossible de résoudre la méthode Schedulers, AndroidSchedulers et getRetrofit – spoiler