簡體   English   中英

JSON到Java對象的通用解析

[英]generic parsing of json to java objects

我有一些Java類,例如MyClass1MyClass2其狀態保存在json對象中:

"MyClass1":[{"var1":"value1","var2":"value2"},{"var1":"value3","var2":"value4"}]
"MyClass2":{"var11":"value5","var22":"value6"}

現在,我想編寫一個通用方法,使用net.sf.json獲取幫助,將Json對象解析為Java對象。

讓我們從MyClass1開始-我想創建一個包含json中描述的2個對象的List<MyClass1>

1: public static <T> List<T> loadBEsFromJson(final File jsonInputFile, final Class<T> tClazz) throws IOException {
2:    final List<T> result = new ArrayList<T>();

3:    final JSONObject input = parseFileToJSONObject(jsonInputFile);

4:    if (input.containsKey(tClazz.toString())) {
5:       JSONArray arr = input.getJSONArray(tClazz.toString()); //VALID???
6:       for (int i = 0; i < arr.size(); i++) {
7:          JSONObject obj = arr.getJSONObject(i);
8:          //now, how do I create an Object of type T?
9:       }
10:   }

11:   return result;
12:}

我的第一個問題是-第5行有效嗎? 我的第二個問題在第8行:在某個時候我想創建一個T類型的對象,這可能嗎?

非常感謝您的幫助!

編輯:也許這就是我正在尋找。 如果您也可以對修改發表評論,我將不勝感激。

4:    if (input.containsKey(tClazz.getSimpleName())) {
5:       JSONArray arr = input.getJSONArray(tClazz.getSimpleName()); //VALID???
6:       for (int i = 0; i < arr.size(); i++) {
7:          JSONObject obj = arr.getJSONObject(i);
8:          T myObj = MyFactory.newObj(tClazz);
            //now write all fields using myObj.getAllFields() or something
9:       }
10:   }

11:   return result;
12:}

使用gson:

Gson gson = new Gson();
BufferedReader br = new BufferedReader(new FileReader("c:\\file.json"));
//convert the json string back to object
DataObject obj = gson.fromJson(br, DataObject.class);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM