2016-09-21 33 views
0

我試圖用火力地堡解析以下JSON:解析ID發佈FirebaseRecyclerAdapter

{ 
      "organizations" : { 
      "-KS5bLCjQmNSQZDIQkTE" : { 
       "about" : { 
       "address" : "teka", 
       "city" : "sns", 
       "country" : "South Africa", 
       "created_at" : 1474358502482, 
       "name" : "diverse", 
       "pincode" : "167377", 
       "state" : "punjab", 
       "utc" : "2016-09-20 08:01:41" 
       }, 
       "department" : { 
       "-KS9LUpZWo5UqtWKJwJ8" : { 
        "address" : "best", 
        "name" : "test" 
       } 
       } 
      } 
      } 
    } 

這裏是我的Java代碼:

@IgnoreExtraProperties 
public class Organizations { 

    About about; 
    Department department; 

    public String getDepartment() { 
    return department; 
    } 

    public static class Department{ 
     public String address; 
     public String name; 

     public String getName() { 
     return name; 
     } 

    public String getAddress() { 
     return address; 
    } 

    } 

} 

FirebaseRecyclerAdapter

fbOrganizationRecycleAdapter = new FirebaseRecyclerAdapter<Organizations, OrganizationHolder> 
       (Organizations.class, R.layout.list_items_orgnization,OrganizationHolder.class,lastFifty) 
       { 
        @Override 
        protected void populateViewHolder(OrganizationHolder viewHolder, final Organizations model, int position) { 
         Log.e(TAG, "test " + model.getDepartment().getName()); 
        } 
       }; 

一切解析精除Department。當我試圖獲得model.getDepartment().getName();時,它返回我null department

如果數據是像下面的JSON,它工作正常:

{ 
      "organizations" : { 
      "-KS5bLCjQmNSQZDIQkTE" : { 
       "about" : { 
       "address" : "teka", 
       "city" : "sns", 
       "country" : "South Africa", 
       "created_at" : 1474358502482, 
       "name" : "diverse", 
       "pincode" : "167377", 
       "state" : "punjab", 
       "utc" : "2016-09-20 08:01:41" 
       }, 
       "department" : { 

        "address" : "best", 
        "name" : "test" 

       } 
      } 
      } 
    } 

我認爲這個問題是與ID。請讓我知道如何從以下JSON解析ID "-KS9LUpZWo5UqtWKJwJ8"

"department" : { 
      "-KS9LUpZWo5UqtWKJwJ8" : { 
       "address" : "best", 
       "name" : "test" 
      } 
      } 
+0

請提供最小代碼tha重現了這個問題。就目前而言,我們不知道'Department'類是什麼樣的,也不知道你如何實際讀取數據(使用某種監聽器或者如何設置適配器的參考)。 –

+0

您可以編寫'JsonDeserializer'或'TypeAdapterFactory'來自行解析它。這裏有一個很好的例子,來自Jesse Wilson(Gson撰稿人)http://stackoverflow.com/a/11272452/1726166 – ytRino

回答

1

試試這個:

class DepartmentChild{ 
    public String address; 
    public String name; 

    public String getName(){ 
     return this.name; 
    } 
} 

public class Organizations { 
    public About about; 
    public Map<String,DepartmentChild> department; 

    public Map<String, DepartmentChild> getDepartment() { 
    return department; 
    } 

    public void setDepartment(Map<String, DepartmentChild> department){ 
    this.department = department; 
    } 
} 

void test(Organizations model){ 
    for (Map.Entry<String, DepartmentChild > entry : model. getDepartment().entrySet()) { 
     Log.e(TAG, "test " + entry.getKey()+ "/" + entry.getValue().getName()); 
    } 
} 

可以遍歷的地圖是這樣的:

for (Map.Entry<String, DepartmentChild> entry : department.entrySet()) 
{ 
    System.out.println(entry.getKey() + "/" + entry.getValue().getName()); 
} 
+0

感謝您的回覆。如何使用部門obj獲取名稱 –

+0

String name = department.getValue(「 - KS9LUpZWo5UqtWKJwJ8」)。name; –

+0

department.getValue Android studio不顯示我的getValue方法 –