有json
{
"message":{
"affenpinscher":[],
"african":[],
"bulldog":["boston","french"],
...
"retriever":["chesapeake","curly","flatcoated","golden"]
...
"wolfhound":["irish"]
}
}
https://dog.ceo/api/breeds/list/all
我正在尝试将其反序列化为<Map<String, List<String>>>
这是我的反序列化器:
public class BreedDeserializer implements JsonDeserializer<Map<String, List<String>>> {
@Override
public Map<String, List<String>> deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
final JsonObject jsonObject = json.getAsJsonObject();
Type type = new TypeToken<Map<String, List<String>>>(){}.getType();
Map<String, List<String>> dogBreeds = context.deserialize(jsonObject.get("message"), type);
return dogBreeds;
}
不幸的是,它返回空值。我检查了json字符串,它确实存在。 有人可以帮我吗?
非常感谢!
答案 0 :(得分:0)
尝试使用此方法创建pojo
Test
public class Test {
@SerializedName("status")
@Expose
private String status;
@SerializedName("message")
@Expose
private Message message;
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public Message getMessage() {
return message;
}
public void setMessage(Message message) {
this.message = message;
}
}
Message
public class Message {
@SerializedName("affenpinscher")
@Expose
private List<Object> affenpinscher = null;
@SerializedName("african")
@Expose
private List<Object> african = null;
@SerializedName("airedale")
@Expose
private List<Object> airedale = null;
@SerializedName("akita")
@Expose
private List<Object> akita = null;
@SerializedName("appenzeller")
@Expose
private List<Object> appenzeller = null;
@SerializedName("basenji")
@Expose
private List<Object> basenji = null;
@SerializedName("beagle")
@Expose
private List<Object> beagle = null;
@SerializedName("bluetick")
@Expose
private List<Object> bluetick = null;
@SerializedName("borzoi")
@Expose
private List<Object> borzoi = null;
@SerializedName("bouvier")
@Expose
private List<Object> bouvier = null;
@SerializedName("boxer")
@Expose
private List<Object> boxer = null;
@SerializedName("brabancon")
@Expose
private List<Object> brabancon = null;
@SerializedName("briard")
@Expose
private List<Object> briard = null;
@SerializedName("bulldog")
@Expose
private List<String> bulldog = null;
@SerializedName("bullterrier")
@Expose
private List<String> bullterrier = null;
@SerializedName("cairn")
@Expose
private List<Object> cairn = null;
@SerializedName("cattledog")
@Expose
private List<String> cattledog = null;
@SerializedName("chihuahua")
@Expose
private List<Object> chihuahua = null;
@SerializedName("chow")
@Expose
private List<Object> chow = null;
@SerializedName("clumber")
@Expose
private List<Object> clumber = null;
@SerializedName("collie")
@Expose
private List<String> collie = null;
@SerializedName("coonhound")
@Expose
private List<Object> coonhound = null;
@SerializedName("corgi")
@Expose
private List<String> corgi = null;
@SerializedName("cotondetulear")
@Expose
private List<Object> cotondetulear = null;
@SerializedName("dachshund")
@Expose
private List<Object> dachshund = null;
@SerializedName("dalmatian")
@Expose
private List<Object> dalmatian = null;
@SerializedName("dane")
@Expose
private List<String> dane = null;
@SerializedName("deerhound")
@Expose
private List<String> deerhound = null;
@SerializedName("dhole")
@Expose
private List<Object> dhole = null;
@SerializedName("dingo")
@Expose
private List<Object> dingo = null;
@SerializedName("doberman")
@Expose
private List<Object> doberman = null;
@SerializedName("elkhound")
@Expose
private List<String> elkhound = null;
@SerializedName("entlebucher")
@Expose
private List<Object> entlebucher = null;
@SerializedName("eskimo")
@Expose
private List<Object> eskimo = null;
@SerializedName("germanshepherd")
@Expose
private List<Object> germanshepherd = null;
@SerializedName("greyhound")
@Expose
private List<String> greyhound = null;
@SerializedName("groenendael")
@Expose
private List<Object> groenendael = null;
@SerializedName("hound")
@Expose
private List<String> hound = null;
@SerializedName("husky")
@Expose
private List<Object> husky = null;
@SerializedName("keeshond")
@Expose
private List<Object> keeshond = null;
@SerializedName("kelpie")
@Expose
private List<Object> kelpie = null;
@SerializedName("komondor")
@Expose
private List<Object> komondor = null;
@SerializedName("kuvasz")
@Expose
private List<Object> kuvasz = null;
@SerializedName("labrador")
@Expose
private List<Object> labrador = null;
@SerializedName("leonberg")
@Expose
private List<Object> leonberg = null;
@SerializedName("lhasa")
@Expose
private List<Object> lhasa = null;
@SerializedName("malamute")
@Expose
private List<Object> malamute = null;
@SerializedName("malinois")
@Expose
private List<Object> malinois = null;
@SerializedName("maltese")
@Expose
private List<Object> maltese = null;
@SerializedName("mastiff")
@Expose
private List<String> mastiff = null;
@SerializedName("mexicanhairless")
@Expose
private List<Object> mexicanhairless = null;
@SerializedName("mix")
@Expose
private List<Object> mix = null;
@SerializedName("mountain")
@Expose
private List<String> mountain = null;
@SerializedName("newfoundland")
@Expose
private List<Object> newfoundland = null;
@SerializedName("otterhound")
@Expose
private List<Object> otterhound = null;
@SerializedName("papillon")
@Expose
private List<Object> papillon = null;
@SerializedName("pekinese")
@Expose
private List<Object> pekinese = null;
@SerializedName("pembroke")
@Expose
private List<Object> pembroke = null;
@SerializedName("pinscher")
@Expose
private List<String> pinscher = null;
@SerializedName("pointer")
@Expose
private List<String> pointer = null;
@SerializedName("pomeranian")
@Expose
private List<Object> pomeranian = null;
@SerializedName("poodle")
@Expose
private List<String> poodle = null;
@SerializedName("pug")
@Expose
private List<Object> pug = null;
@SerializedName("puggle")
@Expose
private List<Object> puggle = null;
@SerializedName("pyrenees")
@Expose
private List<Object> pyrenees = null;
@SerializedName("redbone")
@Expose
private List<Object> redbone = null;
@SerializedName("retriever")
@Expose
private List<String> retriever = null;
@SerializedName("ridgeback")
@Expose
private List<String> ridgeback = null;
@SerializedName("rottweiler")
@Expose
private List<Object> rottweiler = null;
@SerializedName("saluki")
@Expose
private List<Object> saluki = null;
@SerializedName("samoyed")
@Expose
private List<Object> samoyed = null;
@SerializedName("schipperke")
@Expose
private List<Object> schipperke = null;
@SerializedName("schnauzer")
@Expose
private List<String> schnauzer = null;
@SerializedName("setter")
@Expose
private List<String> setter = null;
@SerializedName("sheepdog")
@Expose
private List<String> sheepdog = null;
@SerializedName("shiba")
@Expose
private List<Object> shiba = null;
@SerializedName("shihtzu")
@Expose
private List<Object> shihtzu = null;
@SerializedName("spaniel")
@Expose
private List<String> spaniel = null;
@SerializedName("springer")
@Expose
private List<String> springer = null;
@SerializedName("stbernard")
@Expose
private List<Object> stbernard = null;
@SerializedName("terrier")
@Expose
private List<String> terrier = null;
@SerializedName("vizsla")
@Expose
private List<Object> vizsla = null;
@SerializedName("weimaraner")
@Expose
private List<Object> weimaraner = null;
@SerializedName("whippet")
@Expose
private List<Object> whippet = null;
@SerializedName("wolfhound")
@Expose
private List<String> wolfhound = null;
public List<String> getBulldog() {
return bulldog;
}
public void setBulldog(List<String> bulldog) {
this.bulldog = bulldog;
}
public List<String> getTerrier() {
return terrier;
}
public void setTerrier(List<String> terrier) {
this.terrier = terrier;
}
public List<String> getHound() {
return hound;
}
public void setHound(List<String> hound) {
this.hound = hound;
}
// generate all getter setter here
}
比这样使用
String apiResponse=readJSONFromAsset();
Gson gson = new GsonBuilder().create();
Test resultObj = gson.fromJson(apiResponse, Test.class);
Message message= resultObj.getMessage();
for (int i=0;i<message.getBulldog().size();i++){
Log.e("getBulldog",message.getBulldog().get(i));
}
for (int i=0;i<message.getTerrier().size();i++){
Log.e("getTerrier",message.getTerrier().get(i));
}
for (int i=0;i<message.getHound().size();i++){
Log.e("getHound",message.getHound().get(i));
}