【发布时间】:2017-03-22 09:34:10
【问题描述】:
我已经检查了其他相关问题,但他们的建议都不适用于我的情况。我正在使用 Retrofit 2.2 和 GSON 来获得 Rest 响应: 这是响应的样子:
{"idUser":0,"nom":"kaddour","prenom":"hanedi","login":"hanedi@gmail.com","password":null,"genre":"f","adresse":"ettahrir","codePostal":8050,"tel":20333473,"active":0,"panneaux":null,"lesalertes":null,"paysuser":null,"ville":null}
它是一种有效的 json 格式,但每当我使用此代码调用时,我都会收到 Expected Begin_Object 异常:
apiService = RestService.createService(SolarAPIService.class);
Call<User> call = apiService.authentif(email, pass);
call.enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, retrofit2.Response<User> response) {
user=response.body();}
我找不到哪里出了问题。 任何帮助表示赞赏! 编辑这是我的用户类:
public class User {
@SerializedName("idUser")
@Expose
private int idUser;
@SerializedName("nom")
@Expose
private String nom;
@SerializedName("prenom")
@Expose
private String prenom;
@SerializedName("login")
@Expose
private String login;
@SerializedName("password")
@Expose
private String password;
@SerializedName("genre")
@Expose
private String genre;
@SerializedName("adresse")
@Expose
private String adresse;
@SerializedName("codePostal")
@Expose
private int codePostal;
@SerializedName("tel")
@Expose
private int tel;
@SerializedName("active")
@Expose
private int active;
@SerializedName("panneaux")
@Expose
private List<PanneauV> panneaux;
@SerializedName("lesalertes")
@Expose
private List<Alerte> lesalertes;
@SerializedName("paysuser")
@Expose
private Pays paysuser;
@SerializedName("ville")
@Expose
private Ville ville;
//Constructor with arguments and Constructor without arguments
//getters and setters
【问题讨论】:
-
请告诉我们您的用户等级
-
我相信您提供的 JSON 不 完整:Gson 报告说
{是一个对象开始,但响应有一个字符串。检查您的 real JSON 并确保$.paysuser和$.ville都不是字符串。或者,也许,你的整个响应是一个字符串。 -
这是我的电话 `Call
authentif(@Path("login") String login,@Path("pwd")String pwd);` 它显然应该返回一个用户对象和@ 987654327@ 和 ville是对象。可能是由password导致的,其中一个字符串返回为 null -
@MeknessiHamida 不,
null始终是安全的,不会根据定义导致BEGIN_OBJECT问题。您的User映射在三种情况下仅定义对象 ({):它本身、它的paysuser和它的ville属性。没有任何其他对象映射。请检查回复。要识别确切位置,请阅读异常消息:它必须包含失败的位置路径,如果我没记错的话,还必须包含行和列位置,因此您可以使用该坐标来识别“损坏”标记。 -
Expected BEGIN_OBJECT but was STRING at line 1 column 1 path这是我的例外,所有返回的空值都是除密码之外的对象 Itried 服务器响应在 RestClient(firefox 插件)上,响应看起来完全有效。它不应该被读取为字符串
标签: json retrofit2 android gson