无法反序列化对象的实例进行START_ARRAY令牌
问题描述:
我想我的用户发送到服务器,并获得一个长的数字作为响应,但我得到了客户400错误,并得到这个exeption在服务器端:无法反序列化对象的实例进行START_ARRAY令牌
nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of mashfood.model.User out of START_ARRAY token
我的客户的suser模型为服务器用户模式完全一样:
的suser(或用户):
class User{
public long id;
public String username;
public String password;
public String firstName;
public String lastName;
public String gender;
public String nationalNumber;
public String phoneNumber;
public String address;
public String email;
public boolean isLoggedIn;
public String imageUrl;
public int areaNumber;
}
客户端连接到服务器是这样的: ** tClass是响应 **则params的类型[0]是用户,我要发送到服务器 ** URL +条件方法的网址手柄获取用户
protected ResponseHandler doInBackground(Object... params) {
try {
serverResponse=new ServerResponse();
result = restTemplate.postForObject(URL + conditions, params,tClass);
serverResponse.singleResult=result;
serverResponse.isReady=true;
responseHandler.onServerRespond(serverResponse);
}catch (Exception e){
serverResponse.isReady=false;
serverResponse.message=e.getMessage();
e.printStackTrace();
}
return responseHandler;
}
和服务器端代码:
@RequestMapping(value = "/register",method = RequestMethod.POST)
@ResponseBody
public Long registerNewUser(@RequestBody User user){
if(user!=null){
try {
System.out.println("REGISTER "+ user==null);
SessionFactory sessionFactory=HibenateConnection.connectingHibernate();
Session session=sessionFactory.openSession();
session.beginTransaction();
session.save(user);
session.getTransaction().commit();
User user1=getUser(user.username);
session.close();
return user1.id;
}catch (Exception e){
e.printStackTrace();
}
}
return -1l;
}
和我的输出JSON是:
[{
"address": "",
"areaNumber": 0,
"email": "email",
"firstName": "name",
"gender": "male",
"id": -1,
"imageUrl": "img",
"isLoggedIn": false,
"lastName": "lastn",
"nationalNumber": "898898",
"password": "pass",
"phoneNumber": "936",
"username": "mehdi"
}]
哪里是我的问题吗?
答
我的客户JSON输出为用户包含一个用户,我改变这样的服务器注册的方法来解决我的问题的列表形式:
你能请张贴JSON字符串? – Bhokal
@Bhokal是的,我加入了我的问题 –
为什么这个投票结果作为题外话?它包含一个MCVE。 –