2015-10-17 37 views
0

我的代碼中使用GSON lib中轉換以.json文件到Java模型驗證碼:發生獲取對象,有java.lang.UnsupportedOperationException錯誤

public static void main(String[] args) throws IOException { 
     BufferedReader br = new BufferedReader(
       new FileReader("C:\\developers.json")); 
     List<Developer> devList = new Gson().fromJson(br, Collections.<Developer>emptyList().getClass()); 
     for (Developer d : devList) { 
      System.out.println(d.getAge()); 
     } 
    } 

錯誤,請參閱第二個參數fromJson

Exception in thread "main" java.lang.UnsupportedOperationException 

這個錯誤是爲了鑄造。搜索後我沒有發現比這個代碼更好。 我不知道什麼是錯的? 謝謝任何​​解決它的指導。

編輯: developers.json - >

[ 
    { 
    "name": "mkyong", 
    "age": 120, 
    "salary": 1555002 
    }, 
    { 
    "name": "amir", 
    "age": 20, 
    "salary": 3000000 
    } 
] 

和Developer.java - >

public class Developer { 

    private String name; 
    private BigDecimal salary; 
    private Integer age; 

... 
getters and setters 
} 

回答

1

的異常被拋出,因爲GSON正在創建列表類型的實例由emptyList()返回,然後嘗試向其添加元素。此方法返回的列表的類型是immutable,這導致了UnsupportedOperationException

而不是使用emptyList().getClass(),您應該使用TypeToken反序列化泛型類型,如Gson user guide中所述。

Type listType = new TypeToken<List<Developer>>() {}.getType(); 
List<Developer> devList = new Gson().fromJson(br, listType); 
+0

OK!這工作很好。謝謝。 – amir110

相關問題