2016-03-28 4 views
0

Ich habe diesen Code:sonMappingException: Kann nicht deserialisieren Instanz java.util.ArrayList aus START_OBJECT Token

final List<Device> devicesList = jsonFileHandlerDevice.getList(); 

und diese Methode:

@Override 
    public List<T> getList() { 
     List<T> t = null; 
     ObjectMapper mapper = new ObjectMapper(); 

     if (!file.exists()) { 
      return null; 
     } else { 
      try { 
       t = mapper.readValue(file, new TypeReference<List<T>>(){}); 
      } catch (IOException e) { 
       e.printStackTrace(); 
       throw new RuntimeException(e); 
      } 
     } 
     return t; 
    } 

warum bekomme ich diesen Fehler?

rg.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.util.ArrayList out of START_OBJECT token 
at [Source: /Users/eladb/WorkspaceQa/java/MobileAutomationWebService/library-services/src/main/resources/devices.json; line: 1, column: 1] 
    at org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:163) 
    at org.codehaus.jackson.map.deser.StdDeserializationContext.mappingException(StdDeserializationContext.java:219) 
    at org.codehaus.jackson.map.deser.StdDeserializationContext.mappingException(StdDeserializationContext.java:212) 
    at org.codehaus.jackson.map.deser.std.CollectionDeserializer.handleNonArray(CollectionDeserializer.java:246) 
    at org.codehaus.jackson.map.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:204) 
    at org.codehaus.jackson.map.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:194) 
    at org.codehaus.jackson.map.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:30) 
    at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2723) 
    at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1815) 
    at com.waze.automation.client.services.web.lib.utils.io.JsonFileHandler.getContent(JsonFileHandler.java:66) 

mit diesem Objekt

public class Device { 

    public MobileOs mobileOs; 
    public double osVersion; 
    public int allocatedPort; //0 for free 
// public Integer index; 
    public boolean hasSim; 
    public String uuid; 

und JSON-Datei:

{ 

    { 
     "mobileOs": "ios", 
     "osVersion": 4.2, 
     "allocatedPort": 4444, 
     "hasSim": false, 
     "uuid": "uuid2" 
    }, 
    { 
     "mobileOs": "Android", 
     "osVersion": 5.5, 
     "allocatedPort": 5555, 
     "hasSim": false, 
     "uuid": "uuid1" 
    } 

} 
+0

, wenn Sie einen Client Eingabefehler haben, Fügen Sie den Exception-Handler hinzu und überprüfen Sie die Eingabeaufforderung und Java-Klasse. – VinayVeluri

+0

es wird die gleiche 'JsonMappingException' angezeigt, die auf Konsolen ausgedruckt wurde? –

Antwort

0

Es funktionierte, wenn ich geändert haben:

[ 
    { 
     "mobileOs": "ios", 
     "osVersion": 4.2, 
     "allocatedPort": 4444, 
     "hasSim": false, 
     "uuid": "uuid2" 
    }, 
    { 
    "mobileOs": "Android", 
    "osVersion": 5.5, 
    "allocatedPort": 5555, 
    "hasSim": false, 
    "uuid": "uuid1" 
    } 
    ] 
Verwandte Themen