2016-10-28 15 views
0

jsonを消費してオブジェクトに変換するコードを作成しています。 たとえば、私のjsonの応答は以下の通りです: -オブジェクトのArryaへのJSON応答を逆シリアル化できない

文字列carJson = "{\" car \ ":\" brand \ ":\" Mercedes \ "、\" doors \ ":5} {\ "ブランド\":\ "タタ\"、\ "ドア\":4}]} ";

実際に車の配列。

私は、Javaオブジェクトにそれをデシリアライズするためのコードの下に書かれている: -

ObjectMapper objectMapper = new ObjectMapper(); 

      objectMapper.enable(SerializationFeature.INDENT_OUTPUT); 

      List<Car> jsonToCarList = objectMapper.readValue(carJson, new TypeReference<List<Car>>() {}); 
      jsonToCarList.forEach(System.out::println); 

これは私の車のクラス: -

public class Car {   
      @JsonProperty("car") 
      private List<CarType> car; 

     public Car(@JsonProperty("car") List<CarType> car) { 
      this.car = car; 
     } 

     @JsonProperty("car") 
     public List<CarType> getCar() { 
      return car; 
     } } 

CarTypeは以下の通りです: -

class CarType { 

@JsonProperty("brand") 
private String brand; 

@JsonProperty("doors") 
private String doors; 

public CarType(String brand, String doors) { 
    this.brand = brand; 
    this.doors = doors; 
} 

public CarType() { 

} 

@JsonProperty("brand") 
public String getBrand() { 
    return brand; 
} 

@JsonProperty("doors") 
public String getDoors() { 
    return doors; 
} 
} 

ここで何が間違っているのですか?私は、エラーの下に取得しています: -

Exception in thread "main" com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.util.ArrayList out of START_OBJECT token 
at [Source: {"car" : [{ "brand" : "Mercedes", "doors" : 5 },{ "brand" : "Tata", "doors" : 4 }] }; line: 1, column: 1] 
    at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:148) 
    at com.fasterxml.jackson.databind.DeserializationContext.mappingException(DeserializationContext.java:762) 
    at com.fasterxml.jackson.databind.DeserializationContext.mappingException(DeserializationContext.java:758) 
    at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.handleNonArray(CollectionDeserializer.java:275) 
    at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:216) 
    at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:206) 
    at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:25) 
    at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3066) 
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2168) 
+0

実際の問題は何ですか?エラーが発生していますか?フィールドはヌルですか?あなたは実際に問題が何であるか教えてくれませんでした。 – rmlan

+0

はいエラーが表示されます。私は質問を更新しました。すみません、私はその部分を逃しました。 –

答えて

1

あなたは間違った型にデシリアライズしようとしている。

List<Car> jsonToCarList = objectMapper.readValue(carJson, new TypeReference<List<Car>>() {}); 

したい一覧が車である

Car jsonToCar = objectMapper.readValue(carJson, Car.class); 

する必要がありますあなたが投稿したクラス。

関連する問題