2016-03-28 9 views
0

ich mag meine Benutzer-Server senden und eine lange Reihe als Antwort zu bekommen, aber ich habe 400-Fehler auf dem Client und bekam diese exeption auf Server-Seite:Kann nicht Instanz Objekt aus START_ARRAY deserialisieren Token

nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of mashfood.model.User out of START_ARRAY token 

mein Mandant sUser Modell ist als Server-User-Modell völlig gleich:

sUser (oder Benutzer):

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; 

} 

Client zum Server wie folgt verbinden: ** TClass ist Klasse Art der Reaktion ** params [0] Benutzer, i an den Server gesendet werden soll ** url + Bedingungen URL der Methode, die Benutzer

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; 
} 

und Server-Side-Code immer handhaben ist:

@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; 
} 

und meine Ausgabe JSON ist:

[{ 
"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" 
}] 

wo mein Problem ist?

+0

Können Sie bitte die JSON-String schreiben? – Bhokal

+0

@Bhokal ja ich habe meine Frage –

+0

hinzugefügt Warum wird diese Abstimmung als Off-Topic geschlossen? Es enthält ein MCVE. –

Antwort

0

mein Mandant JSON Ausgabe ist in Form von Liste der Benutzer, die einen Benutzer enthalten und i Ändern Server Register Methode wie folgt mein Problem zu lösen:

@RequestMapping(value = "/register",method = RequestMethod.POST) 
@ResponseBody 
public boolean registerNewUser(@RequestBody List<User> users){ 
    if(users!=null){ 
     try { 
      SessionFactory sessionFactory=HibenateConnection.connectingHibernate(); 
      Session session=sessionFactory.openSession(); 
      session.beginTransaction(); 
      session.save(users.get(0)); 
      session.getTransaction().commit(); 
      session.close(); 
      return true; 
     }catch (Exception e){ 
      e.printStackTrace(); 
      return false; 
     } 
    } 
    return false; 
} 
Verwandte Themen