简体   繁体   English

JSON到Java对象的通用解析

[英]generic parsing of json to java objects

i have some java classes like MyClass1 and MyClass2 whose state is saved in json objects: 我有一些Java类,例如MyClass1MyClass2其状态保存在json对象中:

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

Now I want to write a generic method to parse the Json objects into Java objects using net.sf.json for help. 现在,我想编写一个通用方法,使用net.sf.json获取帮助,将Json对象解析为Java对象。

Let's start with MyClass1 - i want to create a List<MyClass1> containing the 2 objects described in json. 让我们从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:}

My first question is - is line 5 valid? 我的第一个问题是-第5行有效吗? My second question is in line 8: at some point I want to create an object of type T , is that possible? 我的第二个问题在第8行:在某个时候我想创建一个T类型的对象,这可能吗?

Thank a lot for any help! 非常感谢您的帮助!

EDIT: maybe this is what I am looking for. 编辑:也许这就是我正在寻找。 I would be thankful, if you can comment on the edit too. 如果您也可以对修改发表评论,我将不胜感激。

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:}

Use gson: 使用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