2017-06-20 48 views
0

我想從整個嵌套的json中獲取列表json的一部分。我有一個JSON看起來像以下:使用Gson將嵌套的json拆分爲更小的jsons

{ 
    "response": 200, 
    "responseMsg": "Allright", 
    "location": [ 
    { 
     "stateId": 1, 
     "stateName": "West Bengal", 
     "district": [ 
     { 
      "districtId": 15, 
      "districtName": "abc", 
      "village": [ 
      { 
       "villageId": 121, 
       "villageName": "ABC" 
      }, 
      { 
       "villageId": 90, 
       "villageName": "XYZ" 
      } 
      ] 
     }, 
     { 
      "districtId": 11, 
      "districtName": "xyz", 
      "village": [ 
      { 
       "villageId": 58, 
       "villageName": "PQR" 
      } 
      ] 
     } 
     ] 
    } 
    ] 
} 

我已經寫了豆文件如下: Details.java:

public class Details { 

    private int response = 0; 
    private String responseMsg = null; 
    private List<State> states = null; 
public List<State> getLocation() { 
     return location; 
    } 

State.java:

public class State { 

    private int stateId = 0; 

    private String stateName=null; 

    private List<District> district; 

    public List<District> getDistrict() { 
     return district; 
    } 

現在,我只需要不同的狀態json,以便我可以使用它作爲List來填充android中的微調器。 對於解析JSON,我使用

Gson googleJson = builder.create();Details details = googleJson.fromJson(result, Details.class);    
List<State> stateList = details.getLocation(); 

但是當我再次將它轉換爲使用gson.toJson(stateList) JSON這給:

[ 
    { 
    "district": [ 
     { 
     "village": [ 
      { 
      "villageName": "Mekhliganj", 
      "villageId": 57 
      } 
     ], 
     "districtName": "Cooch Bihar", 
     "districtId": 10 
     } 
],"stateName=West Bengal","stateId":1 
} 
} 

但是,這是另一種方式圓如州名進去到底什麼時候我再次將其轉換爲json。 同樣,這同JSON(stateList)給出空指針異常,當我再次嘗試解析它作爲:

State stateObj = gson.fromJson(stateList,State.class); 

什麼應該是正確的方式來做到這一點?即從一個整體使用gson獲取json(list)的一部分並解析該部分?

+0

混淆的問題,我想,請有道ellaborate,你提到的Json與「國家」,但在你的迴應沒有標記命名狀態。請解釋正確,所以可以幫助你, –

+0

@PratikDasa我的意思是位置。我基本上想要一個json,只有部分完整的json響應,即只包含狀態列表的json(和區域,村莊,因爲它們在州內) – Prakruti

+0

您必須使用GSON?什麼結果可變?我的意思是字符串或數組? @Prakruti –

回答

0

得到了您的解決方案...

你是不是在傳遞以下功能全響應

試試這個步驟獲得整個響應:)

1存放在字符串或數據您正在存儲的任何對象類。

2)

Gson gson = new Gson(); 
    String string = gson.toJson(response); 

注意:您剛剛解析剩餘響應。您沒有解析原始響應。當你在上面的函數中通過放置斷點來重新檢查響應。

+0

我已經做了同樣的事情來得到列表的sta部分作爲json。問題是,我無法將此json解析爲State對象。我只想解析響應的子部分。當我做state stateObj = gson.fromJson(stateList,State.class)時它直接給出null異常; – Prakruti

0
public class Details { 

    private int response = 0; 
    private String responseMsg = null; 
    private Location location = null; 

    //add getter and setter 

} 

public class Location{ 
    private List<State>stateList; 

//add getter and setter 

} 

最後

public class State { 

    private int stateId = 0; 
    private String stateName=null; 
    private List<District> district; 

    //add getter and setter 
}