2016-07-21 2 views
0

У меня есть этот JSON ответКак разобрать сложный JSON с помощью GSON и Java

{ 
"data":{ 
    "last_name":"abcdef", 
    "email":"[email protected]", 
    "data1":{ 
     "data2":{ 
      "membership":"senior" 
     }, 
     "Skills":[ 
      { 
       "C":"GOOD", 
       "C++":"AVERAGE", 
       "JAVA":"GOOD", 
       "WEB":"GOOD" 
      } 
     ] 
    } 
} 
} 

Теперь я использую следующий метод, чтобы разобрать его через GSON

public class ABC { 
    public String last_name; 
    public String email; 
    . 
    . 
    . 
} 

А потом я

Пусть мы рассматриваем JSON OBJECT is == responseObject

ABC obj = (ABC)responseObject // TypeCasting 

obj.last_name дает мне результат для последнего имени Как реализовать массив и другой словарь данных?

+1

см это http://www.mkyong.com/java/how -do-convert-java-object-to-from-json-format-gson-api/ – vinoth12594

ответ

-1

Попробуйте это:

Gson gson = new Gson(); 
ABC abc = gson.fromJson(responseObject, ABC.class); 

а является объектом, который вы хотите.

1

Вы можете использовать библиотеку gson, которая упростит анализ и будет также быстро. делают следующий класс, и он будет конвертировать JSON в ваш объект Java

public class Details { 

    public MyData data; 

} 

public class MyData{ 

    public String last_name; 
    public String email; 
    public MyData1 data1; 

} 

public class MyData1 { 

    public MyData2 data2; 
    public List<Skill> Skills; 
} 

public class Mydata2{ 

    public string membership; 
} 

public class Skill { 

    public String C; 
    public String C++; 
    public String JAVA; 
    public String WEB; 
} 

// call following statement where you want to parse 
Details details= new Gson().fromJson(json, Details.class); 
+0

Как я могу получить доступ к JAVA? информация.JAVA ??? –

+0

Я думаю, что это должен быть ответ. @kashyapkbandi, вы можете использовать 'details.data.data1.Skills.JAVA', чтобы получить значение' JAVA'. –

+0

details.data.data1.Skills.get (0) .JAVA // Навыки - это объект списка, поэтому вы можете передать индекс для извлечения объекта Skill –

-1

Попробуйте это:

try { 
     JSONObject object = new JSONObject(jsonString); 
     if (object.has("data")) { 
      JSONObject dataObject = object.getJSONObject("data"); 
      String name = "", email = "", membership = ""; 
      if (dataObject.has("last_name")) { 
       name = dataObject.getString("last_name"); 
      } 
      if (dataObject.has("email")) { 
       email = dataObject.getString("email"); 
      } 
      ABC abc = new ABC(); 
      abc.setLast_name(name); 
      abc.setEmail(email); 
      abc.setMembership(membership); 
      if (dataObject.has("data1")) { 
       JSONObject data1JsonObject = dataObject.getJSONObject("data1"); 
       if (data1JsonObject.has("data2")) { 
        membership = data1JsonObject.getJSONObject("data2").getString("membership"); 
       } 

       if (data1JsonObject.has("Skills")) { 
        JSONArray jsonArray = data1JsonObject.getJSONArray("Skills"); 
        Skills skills = new Skills(); 
        for (int i = 0; i < jsonArray.length(); i++) { 
         JSONObject skillsJsonObject = jsonArray.getJSONObject(i); 
         if (skillsJsonObject.has("C")) { 
          skills.setC(skillsJsonObject.getString("C")); 
         } 
         if (skillsJsonObject.has("C++")) { 
          skills.setcPlusPlus(skillsJsonObject.getString("C++")); 
         } 
         if (skillsJsonObject.has("JAVA")) { 
          skills.setJava(skillsJsonObject.getString("JAVA")); 
         } 
         if (skillsJsonObject.has("WEB")) { 
          skills.setWeb(skillsJsonObject.getString("WEB")); 
         } 
        } 
        abc.setSkills(skills); 
       } 
      } 
     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

ABC.java

public class ABC { 
private String last_name; 
private String email; 
private String membership; 
private Skills skills; 

public String getLast_name() { 
    return last_name; 
} 

public void setLast_name(String last_name) { 
    this.last_name = last_name; 
} 

public String getEmail() { 
    return email; 
} 

public void setEmail(String email) { 
    this.email = email; 
} 

public String getMembership() { 
    return membership; 
} 

public void setMembership(String membership) { 
    this.membership = membership; 
} 

public Skills getSkills() { 
    return skills; 
} 

public void setSkills(Skills skills) { 
    this.skills = skills; 
} 
} 

Skills.java

public class Skills { 
private String c; 
private String cPlusPlus; 
private String java; 
private String web; 

public String getC() { 
    return c; 
} 

public void setC(String c) { 
    this.c = c; 
} 

public String getcPlusPlus() { 
    return cPlusPlus; 
} 

public void setcPlusPlus(String cPlusPlus) { 
    this.cPlusPlus = cPlusPlus; 
} 

public String getJava() { 
    return java; 
} 

public void setJava(String java) { 
    this.java = java; 
} 

public String getWeb() { 
    return web; 
} 

public void setWeb(String web) { 
    this.web = web; 
} 
} 
Смежные вопросы