2016-10-25 3 views
1

У меня есть файл в формате JSON:Не может десериализацию экземпляра parseJason при использовании Джексона для разбора JSON файла

[ 
{ 
     "name":"Move", 
     "$$hashKey":"object:79", 
     "time":11.32818, 
     "endTime":18.615535 
    }, 
    { 
     "name":"First Red Flash", 
     "$$hashKey":"object:77", 
     "time":15.749153 
    }, 
    { 
     "name":"Pills", 
     "subEventTypes":[ 
     "pull down bottle", 
     "unscrew lid", 
     "dump pills out", 
     "screw lid on", 
     "put bottle away" 
     ], 
     "$$hashKey":"object:82", 
     "time":25.130175, 
     "subEventSplits":[ 
     26.092057, 
     27.425881, 
     31.841594, 
     34.268093 
     ], 
     "endTime":36.234827 
    } 


] 

Я пытался разобрать этот файл JSON с помощью Джексону. Я написал следующий код:

public class Holder{ 
     public Holder(){}; 
     //getter and setters 

     String name; 
     List<String> subEventTypes = new ArrayList<>(); 
     Double time; 
     String $$hashKey; 
     Double endTime; 
     List<Double> subEventSplits = new ArrayList<>(); 

    } 
class MapperClass{ 
    List<Holder> list = new ArrayList<>(); 
} 

public static void main(String[] args) throws JsonProcessingException, IOException 
{ 
    ObjectMapper mapper = new ObjectMapper(); 
    List<Holder> list = mapper.readValue(new File("data.json"), mapper.getTypeFactory().constructCollectionType(
      List.class, Holder.class)); 

} 

Когда я запускаю программу, он показал эту ошибку: "

No suitable constructor found for type [simple type, class parseJason$Holder]: can not instantiate from JSON object (need to add/enable type information?) 

". Что-то не так с моим кодом? или я должен использовать другой способ для анализа моего Json-файла.

+0

всегда сверяться с jsonlint.com, является ли это верно или нет JSON –

+0

действительно JSON – user3369592

+0

** После ** ваша правка это. –

ответ

1

попробовать

list = mapper.readValue(
       jsonString, 
       objectMapper.getTypeFactory().constructCollectionType(
         List.class, Holder.class)); 
+0

Спасибо за ответ. Я получил следующую ошибку: «Не найдено подходящего конструктора для типа [simple type, class parseJason $ Holder]: невозможно создать экземпляр из объекта JSON (нужно добавить/включить информацию о типе?) at [Источник: data.json; line: 3 , column: 7] " – user3369592

+0

Да, вам понадобится конструктор по умолчанию плюс getter/setters в вашем' Holder' –

+0

. Я понял это. Я должен добавить «статический» для внутреннего класса «владелец», – user3369592

 Смежные вопросы

  • Нет связанных вопросов^_^