Thank you DroiDev and MohamedMohaideenAH. Finally i got the solution
private void parseJson(JSONObject jsonObject){
    try {
        for(int i = 0; i < jsonObject.length(); i++){
            if(jsonObject.get(jsonObject.names().getString(i)) instanceof JSONObject){
                Log.e("===Start===", "===Start===");
                Log.e("objectName", jsonObject.names().getString(i));
                JSONObject  singleObj = new JSONObject(jsonObject.get(jsonObject.names().getString(i)).toString());
                Iterator<String> keys= singleObj.keys();
                while (keys.hasNext()){
                    String keyValue = keys.next();
                    String valueString = singleObj.getString(keyValue);
                    if(!isJSONObjectOrString(valueString))
                        Log.e(keyValue, valueString);
                }
                Log.e("===End===", "===End===");
                parseJson(singleObj);
            }
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }
}
private boolean isJSONObjectOrString(String str) {
    try {
        new JSONObject(str);
    } catch (JSONException e) {
        //e.printStackTrace(); //If you uncomment, log will confuse you
        return false;//If string
    }
    return true;//If JSONObject
}
solved Android: Access all nested JSON objects dynamically [duplicate]