2016-01-05 1 views
1

У меня есть этот объект:конкретизации объектов по файлу конфигурации на Java

public class TheObjectToInstantiate{ 
public String Name; 
public String Surname; 
public TheObjectToInstantiate(){ 
} 
} 

Я хочу, чтобы создать экземпляр массива TheObjectToInstantiate [] с файлом конфигурации:

TheObjectToInstantiate1.Name="Pippo" 
TheObjectToInstantiate1.Surname="PippoSurname" 
TheObjectToInstantiate2.Name="Pluto" 
TheObjectToInstantiate2.Surname="PlutoSurname" 

Я попытался с

public ConfigReader(){ 
    Properties prop = new Properties(); 
    InputStream input = null; 

    try { 

     input = new FileInputStream("configuration.prop"); 
     prop.load(input); 

     Enumeration<?> e = prop.propertyNames(); 
     while (e.hasMoreElements()) { 
      String key = (String) e.nextElement(); 
      String value = prop.getProperty(key); 
      ...... 
     } 

    } catch (IOException ex) { 
     ex.printStackTrace(); 
    } finally { 
     if (input != null) { 
      try { 
       input.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 

} 

сканирование всех свойств и instatiate ob ject вручную.

Есть способы или обходная программа с открытым исходным кодом для этого без ручного сравнения всех свойств? Thanks

+1

Вы можете получить некоторую помощь из [конфигурации apache] (http://commons.apache.org/configuration/) и получить массив строк 'configuration.getAsStringArray (" key ")' – Paizo

+0

Что вы ожидаете от этого кода? делать и что это на самом деле делает? –

+0

См. [Эту тему] (http://stackoverflow.com/questions/7015491/better-way-to-represent-array-in-java-properties-file). Если вам нужно настроить массивы в файле конфигурации, лучшим вариантом является XML. –

ответ

1

С помощью json-файлов и десериализации их можно использовать библиотеки, такие как Jackson. Вы также можете проверить http://www.mkyong.com/java/how-to-convert-java-object-to-from-json-jackson и How to use Jackson to deserialise an array of objects

public class TheObjectToInstantiate { 
    public String Name; 
    public String Surname; 
    public TheObjectToInstantiate(){} 
} 

public class JacksonExample { 
    public static void main(String[] args) { 

    ObjectMapper mapper = new ObjectMapper(); 

    try { 
     // Convert JSON string from file to Object 
     TheObjectToInstantiate object = mapper.readValue(new File("G:\\myobject.json"), TheObjectToInstantiate.class); 
    } catch (IOException e) { 
      e.printStackTrace(); 
    } 

} 

JSon файл будет выглядеть так:

{ 
    "Name" : "foo", 
    "Surname" : "bar" 
} 

вы также можете десериализации список объектов:

List<TheObjectToInstantiate> myObjects = mapper.readValue(new File("G:\\myobjectlist.json"), new TypeReference<List<TheObjectToInstantiate>>(){}); 


[{ 
    "Name" : "foo1", 
    "Surname" : "bar1" 
}, 
{ 
    "Name" : "foo2", 
    "Surname" : "bar2" 
}] 

Он также поддерживает более сложной структуры, подобные вложенным объектам, или список или массив других объектов внутри вашего основного объекта.

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