我正在使用 Spring for Android 从我的 restful 服务器和 gson 请求数据,以将 json 转换为 Java 对象,而无需访问对象中的任何函数。
由于有一个json属性“user_id”,我想在转换后将它保存为sqlite数据的主键。
问题是我的sqlite库将“mId”属性定义为抽象类中的主键。而gson convert没有使用“set function”来设置属性。我唯一想要的是将 user_id 正确地转换为 mId 。
代码如下:
1.访问sqlite的抽象类:
public abstract class Model {
protected Long mId = null;
public final Long getId() {
return mId;
}
public void setId(Long id){
mId = id;
}
public void saveToSqlite(){
//using mId;
}
}
2.restful用户数据类:
public class User extends Model implements Serializable{
private static final long serialVersionUID = 1L;
@SerializedName("user_id")
private Long userId;
public Long getUserId() {
return userId;
}
//this function is not accessed when user object generated
public void setUserId(Long userId) {
this.userId = userId;
this.setId(userId);
}
}
3.请求和转换代码:
RestTemplate restTemplate = new RestTemplate();
GsonHttpMessageConverter jsonConverter = new GsonHttpMessageConverter();
restTemplate.getMessageConverters().add(jsonConverter);
final String url = "http://restful.test.com/users";
User[] users = restTemplate.getForObject(url, User[].class);