我如何解析 Firebase JSON 输出
How can I parsing Firebase JSON output
{
"-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 中进行改造解析。它具有唯一的对象名称。
我的 json 地址:https://fireapp-a889c.firebaseio.com/PdfContent.json
编辑
在您的 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'
由于 firebase 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);
}
});
它returns正是您所需要的。之后,您可以使用迭代器将输出日期转换为具有适当 ID 的项目列表。
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"}
{
"-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 中进行改造解析。它具有唯一的对象名称。
我的 json 地址:https://fireapp-a889c.firebaseio.com/PdfContent.json
编辑
在您的 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'
由于 firebase 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);
}
});
它returns正是您所需要的。之后,您可以使用迭代器将输出日期转换为具有适当 ID 的项目列表。
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"}