2016-12-21 1 views
-1

У меня есть следующий JSON для создания POJO и что POJO будут использоваться в библиотеке Android Retrofit, но как создать классы POJO с двойным именем свойства JSON?Как создать POJO для двойного имени свойства в JSON для Android. Обновленная библиотека

Мой пример JSON:

{ 
    "result": { 
     "detail": { 
      "name": "sample" 
     } 
    }, 
    "info": { 
     "detail": { 
      "user_information": "user" 
     } 
    } 
} 

Здесь JSON объект detail дублируется в info и result объектов JSON, если я создаю detail.java for result и detail_.java for info затем получить исключения нулевого указателя из библиотеки Retrofit (я надеюсь, получить исключение для несоответствие имени свойства с классами pojo).

ответ

0

Вы можете использовать this site для преобразования json в классы pojo. Secondary вы можете объявить класс Detail внутри класса Result и класс Info как внутренний класс. Пример: - View.OnClickListener и DialogInterface.OnClickListener. В этом примере имя интерфейса OnClickListener такое же, поэтому нам нужно написать имя внешнего класса, чтобы отличить его.

В вашем случае, это JSON преобразуется сайта: -

-----------------------------------com.example.Detail.java----------------------------------- 

package com.example; 

import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

public class Detail { 

@SerializedName("name") 
@Expose 
private String name; 

public String getName() { 
return name; 
} 

public void setName(String name) { 
this.name = name; 
} 

} 
-----------------------------------com.example.Detail_.java----------------------------------- 

package com.example; 

import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

public class Detail_ { 

@SerializedName("user_information") 
@Expose 
private String userInformation; 

public String getUserInformation() { 
return userInformation; 
} 

public void setUserInformation(String userInformation) { 
this.userInformation = userInformation; 
} 

} 
-----------------------------------com.example.Example.java----------------------------------- 

package com.example; 

import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

public class Example { 

@SerializedName("result") 
@Expose 
private Result result; 
@SerializedName("info") 
@Expose 
private Info info; 

public Result getResult() { 
return result; 
} 

public void setResult(Result result) { 
this.result = result; 
} 

public Info getInfo() { 
return info; 
} 

public void setInfo(Info info) { 
this.info = info; 
} 

} 
-----------------------------------com.example.Info.java----------------------------------- 

package com.example; 

import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

public class Info { 

@SerializedName("detail") 
@Expose 
private Detail_ detail; 

public Detail_ getDetail() { 
return detail; 
} 

public void setDetail(Detail_ detail) { 
this.detail = detail; 
} 

} 
-----------------------------------com.example.Result.java----------------------------------- 

package com.example; 

import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

public class Result { 

@SerializedName("detail") 
@Expose 
private Detail detail; 

public Detail getDetail() { 
return detail; 
} 

public void setDetail(Detail detail) { 
this.detail = detail; 
} 

} 
+0

Я пробовал это уже, если вы попробуете это ПОЖО в преобразовании JSON, вы получите исключение из нулевого указателя. –

+0

предоставить данные журнала для 'NullPointerException' –

2

Создать POJO, как это с помощью внутренних классов.

public class JsonResponse{ 

    public Result result; 
    public Info info; 

    //Getters and Setters 

    public class Result{ 

     public NameDetails detail; 
     //Getters and Setters 

     public class NameDetails{ 

     public String name; 
      //Getters and Setters 
     } 
    } 

    public class Info{ 

     public UserInfoDetails detail; 
     //Getters and Setters 

    public class UserInfoDetails { 

     public String user_information; 
      //Getters and Setters 
     } 
    } 

} 
Смежные вопросы