我在使用netty时候,由于不同设备发出的JSON字符串不一样,我需要一个动态解析JSON字符串方法去解决,我的思路是先将json字符串通过gson这个类转成map,由于在运行期间无法得知T的具体类型,对这个类的对象进行序列化和反序列化都不能正常进行。Gson通过借助TypeToken类来解决这个问题。
//实例化gson
Gson gson=new Gson();
//实例化TypeToken
Type type=new TypeToken<Map>() {}.getType();
//把json转成map
Map map= gson.fromJson(json,type);
通过迭代器获取map 的所有value值并且赋值给ArrayList存储,因为是动态解析,我无法知道是value什么类型,所以用Object类型,写入数据库时会自动转换
//实例化ArrayList,用来存放value值
ArrayList list = new ArrayList();
//使用Iterator获取map的key与value的集合
Iterator it = map.entrySet().iterator() ;
while (it.hasNext()){
//通过Entry获取key与value
Map.Entry entry = (Map.Entry) it.next() ;
//通过getValue获取value值
Object value = entry.getValue() ;
//把获取的值通过toString方法添加到ArrayList
list.add(value.toString());
}</