2017-08-22 46 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" 
    } 
} 

它是我的json文本。我如何解析与android中的翻新。它具有唯一的对象名称。如何解析Firebase JSON输出

我的JSON地址:https://fireapp-a889c.firebaseio.com/PdfContent.json

+0

试试这个网址:http:// WWW .jsonschema2pojo.org/ –

+0

我知道pojo,但pojo创建了多少个独特的对象名称。 – spoiler

+0

解析后,您可以更改字段名称,只保留SerializedName Annoation。 –

回答

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(); 
    } 

在这里你只需要在你的JSON字符串传递到jsonData 所以,你得到的输出,

输出:

{"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

谢谢,我该如何改造这个?模型类和回调API? – spoiler

+0

您需要妥善管理您的Firebase数据库 –

+0

但我认为这是一个简单的方法,因为如果您使用retrofit然后最终返回JSONObject –

0

编辑

添加在您的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' 

由于火力JSON的依赖是地图Map<String,Object>您可以在以下方式

检索数据
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; 
} 
} 

请求接口:

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

然后调用它,你需要:

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); 
       } 
      }); 

它返回正是你需要的。之后,您可以使用迭代器将输出日期转换为具有适当ID的项目列表。

+0

是翻新强制不幸 – spoiler

+0

@spoiler我更新了我的答案 –

+0

无法解析调度程序,AndroidSchedulers和getRetrofit方法 – spoiler