我有一些 java 类MyClass1
,它们MyClass2
的状态保存在 json 对象中:
"MyClass1":[{"var1":"value1","var2":"value2"},{"var1":"value3","var2":"value4"}]
"MyClass2":{"var11":"value5","var22":"value6"}
现在我想编写一个通用方法来使用net.sf.json
帮助将 Json 对象解析为 Java 对象。
让我们从 MyClass1 开始 - 我想创建一个List<MyClass1>
包含 json 中描述的 2 个对象。
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 行:在某些时候我想创建一个 type 的对象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:}