2013-09-05 3 views
1

Я пытаюсь преобразовать json из текстового файла в объект java.Преобразование json из файла в объект java

Я пробовал и библиотеку Джексона, и я вложил в зависимость, а что нет. В моем json-файле есть и верблюжьей кейс и подчеркивания, и это вызывает ошибку при запуске моей программы. Вот код, который я использовал для когда-либо относящегося к gson librar, и он ничего не делает, результат тот же с или без кода, который я разместил.

java.net.URL url = this.getClass().getResource("/test.json"); 
      File jsonFile = new File(url.getFile()); 
      System.out.println("Full path of file: " + jsonFile); 
try 
     { 

     BufferedReader br = new BufferedReader(new FileReader("/test.json")); 

     // convert the json string back to object 
     DataObject obj = gson.fromJson(br, DataObject.class); 

     System.out.println(obj); 

     } catch (IOException e) 
     { 
     e.printStackTrace(); 
     } 

Теперь я также попробовал библиотеку Джексона. Вот код, я использовал

java.net.URL url = this.getClass().getResource("/test.json"); 
     File jsonFile = new File(url.getFile()); 
     System.out.println("Full path of file: " + jsonFile); 

ObjectMapper mapper = new ObjectMapper(); 
     mapper.setPropertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES); 
     InputStream is = Test_Project.class.getResourceAsStream("/test.json"); 
     SampleDto testObj = mapper.readValue(is, SampleDto.class); 
     System.out.println(testObj.getCreatedByUrl()); 

Я не уверен, что делать,

+2

какая ошибка вы получаете? – nwaltham

+0

Добавьте вас 'test.json' и DTOs – Ilya

ответ

8

Этот простой пример работает как шарм:
DTOS

public class SampleDTO 
{ 
    private String name; 
    private InnerDTO inner; 
    // getters/setters 
} 

public class InnerDTO 
{ 
    private int number; 
    private String str; 
    // getters/setters 
} 

Gson

BufferedReader br = new BufferedReader(new FileReader("/tmp/test.json")); 
    SampleDTO sample = new Gson().fromJson(br, SampleDTO.class); 

Джексон

InputStream inJson = SampleDTO.class.getResourceAsStream("/test.json"); 
    SampleDTO sample = new ObjectMapper().readValue(inJson, SampleDTO.class); 

JSON (test.json)

{ 
    "name" : "Mike", 
    "inner": { 
     "number" : 5, 
     "str" : "Simple!" 
    } 
} 
+1

Илья, вы можете улучшить свой отличный ответ, показывая, как можно преобразовать массив json в файл в коллекцию объектов java ;-) –

+0

Как получить относительный путь test.json в Ява? –

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