2016-11-01 1 views
0

1.I один файл в формате JSON:

(1) .successful возвращение JSON данные:

{ 
    "code": 100, 
    "result": { 
     "pic": "http%3A%2F%2Fres1.adyun.com%2Fres1%2Fupload %2F40543%2Fidea_201609%2F14736434292154.jpg", 
     "clickurl": "http%3A%2F%2Fs.adyun.com%2Fsdkclick%3Fa%3D3062120448_3895541760_4%26i %3D5575715%26c 

%3D7DA0B90B6DF81BD015A97357FB7F%26d%3D924737536_557985792_4246247424_6040307314919997440%26e 

%3Dd4ee13b64d2cd3f7_2%26g %3D0%26h%3D329d7b4280da7ffc%26s%3D29281%26k%3D2%26j%3D5%26l%3D0%26v%3D3%26r 

%3D687474703A2F2F7777772E786C7A73736A2E636F6D2F", 
     "holycrap": "557985792_4246247424_6040307314919997440", 
     "telno": "" 
    } 
} 

(2) возвращение отказ JSON данные:

{ 
    "code":-23, 

    "result":"no ad" 
} 

2.into список объектов.

BaseRet baseRet = new Gson().fromJson(content, BaseRet.class); 

3.Хороший объект класса, который я использую.

BaseRet:

public class BaseRet { 

    public int code;//": 100 

    public AdData result;//<- 
} 

AdData:

public class AdData { 
    public String pic;   
    public String clickurl;  
    public String clicknotifyurl; 

    public String holycrap;  
    public String telno;   
    public String getClicknotifyurl() { 
     return clicknotifyurl; 
    } 


    public void setClicknotifyurl(String clicknotifyurl) { 
     this.clicknotifyurl = clicknotifyurl; 
    } 

    public String getClickurl() { 
     return clickurl; 
    } 

    public void setClickurl(String clickurl) { 
     this.clickurl = clickurl; 
    } 

    public String getHolycrap() { 
     return holycrap; 
    } 

    public void setHolycrap(String holycrap) { 
     this.holycrap = holycrap; 
    } 

    public String getPic() { 
     return pic; 
    } 

    public void setPic(String pic) { 
     this.pic = pic; 
    } 

    public String getTelno() { 
     return telno; 
    } 

    public void setTelno(String telno) { 
     this.telno = telno; 
    } 
} 

4.Но он бросает меня с

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 24 path $.result 

5.Any идеи, как я должен это исправить?

+0

в 'BaseRet', класс' 'result' является AdData'. но ваши данные второго json имеют «результат»: «no ad», что означает «результат» - это строка. gson пытается десериализовать строку в объект AdData и не работает. – ymonad

+0

И обходной путь, возможно, определяет 'result' как' JsonElement'. – ymonad

ответ

1

ключевым моментом является ваш ответ об отказе от результата - это STRING, а не JSONObject. Если вы хотите исправить, PLS не использовать один ключ для представления другого типа.

например.

class BaseRet<T>{ 
 
    int code; 
 
    String msg; 
 
    T result; 
 
}

шаг результат неудача 'нет объявлений', чтобы пары сообщи, пусть результат будет нулевым

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