gpt4 book ai didi

java - 对象转换为 json 时变为 null

转载 作者:太空宇宙 更新时间:2023-11-04 12:29:59 25 4
gpt4 key购买 nike

这是问题所在,当我使用改造将对象发送到服务器时,我得到它为空。我这样做是为了创建 json 对象:

HashMap<String, UserModel> map = new HashMap<>();
map.put("user", user);

但是,当 json 到达服务器时,我得到如下内容:

{"user":null}

然后我用这一行打印了 ny json 文件:

Log.d("TAG", new JSONObject(map).toString());

我看到了相同的空对象。

所以,这是我的问题,为什么会发生这种情况?我该如何解决这个问题?

以下是有关我的项目的一些信息:

Retrofit version: 2.0.0
Retrofit serializer: jackson version 2.0.0
using also jackson to convert JodaTime version 2.4.0

这是我如何获取改造实例:

public T buildServiceInstance(Class<T> clazz){
return new Retrofit.Builder().baseUrl(BuildConfig.API_HOST)
.addConverterFactory(JacksonConverterFactory.create())
.build().create(clazz);
}

我在这里调用该方法:

public static final IUserApi serviceInstance = new ApiBuildRequester<IUserApi>()
.buildServiceInstance(IUserApi.class);

接口(interface)IUserApi上的方法声明:

@POST("User.svc/Save")
Call<ResponseSaveUserApiModel> save(@Body HashMap<String, UserModel> map);

最后,但我想,这也同样重要:

public class UserModel implements Parcelable {


private String idUser;
private String name;
private String email;
@JsonProperty("password")
private String safePassword;
private String salt;
private String phoneNumber;
private String facebookProfilePictureUrl;
private String facebookUserId;

public UserModel() {
}

public String getName() {
return name;
}

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

public String getIdUser() {
return idUser;
}

public void setIdUser(String idUser) {
this.idUser = idUser;
}

public String getEmail() {
return email;
}

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

public String getSafePassword() {
return safePassword;
}

public void setSafePassword(String safePassword) {
this.safePassword = safePassword;
}

public String getPhoneNumber() {
return phoneNumber;
}

public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}

public String getFacebookProfilePictureUrl() {
return facebookProfilePictureUrl;
}

public void setFacebookProfilePictureUrl(String facebookProfilePictureUrl) {
this.facebookProfilePictureUrl = facebookProfilePictureUrl;
}

public String getFacebookUserId() {
return facebookUserId;
}

public void setFacebookUserId(String facebookUserId) {
this.facebookUserId = facebookUserId;
}

@Override
public int describeContents() {
return 0;
}

public UserModel(Parcel in) { // Deve estar na mesma ordem do "writeToParcel"
setIdUser(in.readString());
setName(in.readString());
setEmail(in.readString());
setSafePassword(in.readString());
setPhoneNumber(in.readString());
setFacebookProfilePictureUrl(in.readString());
setFacebookUserId(in.readString());
}

@Override
public void writeToParcel(Parcel dest, int flags) { //Deve estar na mesma ordem do construtor que recebe parcel
dest.writeString(idUser);
dest.writeString(name);
dest.writeString(email);
dest.writeString(safePassword);
dest.writeString(phoneNumber);
dest.writeString(facebookProfilePictureUrl);
dest.writeString(facebookUserId);
}

public static final Parcelable.Creator<UserModel> CREATOR = new Parcelable.Creator<UserModel>(){
@Override
public UserModel createFromParcel(Parcel source) {
return new UserModel(source);
}

@Override
public UserModel[] newArray(int size) {
return new UserModel[size];
}
};

public String getSalt() {
return salt;
}

public void setSalt(String salt) {
this.salt = salt;
}
}

调试屏幕:

enter image description here

最佳答案

@Selvin 和 @cricket_007 你们是最棒的!

我根据你的提示得到了这个,我的打印是错误的,并且我找到了解决方案。我的应用程序中有两种类型的用户,facebook 用户或 native 用户,两种形式,但只有一个对象,这就是问题,当我发送 facebook 对象(完整)时,它工作正常,但是当我尝试发送带有一些 null 属性的 native 用户时,它使我的序列化崩溃。

所以我必须在发送之前检查每个属性,这只是一个解决方法,但现在已经足够了,非常感谢大家!

关于java - 对象转换为 json 时变为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37954989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com