2014-12-14 5 views
0

я написал ниже код, чтобы сохранить сложный Java объект, содержащий несколько других объектов в виде файла на дискеКак Разбор JAVA ArrayList из JSON файла

public static void savePattern(ArrayList<Pattern> p,String filename){ 
    String fn; 
    Gson gson = new Gson(); 
    JsonElement element = gson.toJsonTree(p, new TypeToken<ArrayList<Pattern>>() {}.getType()); 
    JsonArray jsonArray = element.getAsJsonArray(); 
    String json = gson.toJson(jsonArray); 
    try { 
     //write converted json data to a file named "file.json" 
     if(filename != null){ 
      fn = "JsonObjects/objects.json"; 
     } 
     else{ 
      fn = "JsonObjects/" + filename + ".json"; 
     } 
     FileWriter writer = new FileWriter("fn"); 
     writer.write(json); 
     writer.close(); 
    } 
    catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

я полностью застрял, когда я пытаясь написать метод для загрузки файла с диска в ArrayList с типом.

public static ArrayList<Pattern> loadPattern(){ 
    ArrayList<Pattern> patterns = new ArrayList<>(); 
    Gson gson = new Gson(); 
    JsonParser jsonParser = new JsonParser(); 
    try { 
     BufferedReader br = new BufferedReader(new FileReader("JsonObjects/objects.json")); 
     JsonObject jo = (JsonObject)jsonParser.parse(br); 

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

ответ

0

Вы пробовали:

public static List<Pattern> loadPattern(){ 
    ArrayList<Pattern> patterns = new ArrayList<>(); 
    Gson gson = new Gson(); 
    JsonParser jsonParser = new JsonParser(); 
    try { 
     BufferedReader br = new BufferedReader(new FileReader("JsonObjects/objects.json")); 
     JsonElement jsonElement = jsonParser.parse(br); 

     //Create generic type 
     Type type = new TypeToken<List<Pattern>>() {}.getType(); 
     return gson.fromJson(jsonElement, type); 

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