import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.util.HashMap;
import java.util.Map;
/**
* Map转String
*
* @param map
* @return
*/
public String mapToJsonStr(Map<String,Object> map) {
return new Gson().toJson(map);
}
//obj 转 String
return new Gson().toJson(obj);
// Object类型的json转换为map
String str = GsonFactory.getGson().toJson(response.getResponseData());
Gson gson = new Gson();
Map<String, Object> resMap = gson.fromJson(str, new TypeToken<Map<String, Object>>() {
}.getType());
/**
* 任意类型转map
*
* @param obj 任意类型的bean
* @return map
*/
public Map<String, Object> beanToMap(People obj) {
//bean转map
Map<String, Object> resMap = new Gson().fromJson(new Gson().toJson(obj), new TypeToken<Map<String, Object>>() {
}.getType());
resMap.forEach((k, v) -> {
System.out.println("key==" + k + ",value==" + v);
});
return resMap;
}
package com.mapdemo;
import com.LamdaDemo.People;
import com.alibaba.fastjson.JSON;
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
import com.google.gson.reflect.TypeToken;
import java.util.Map;
public class MapToBean {
public static void main(String[] args) {
People people = new People();
people.setAge(18);
people.setName("张三");
people.setSex(0);
people.setStuNum(10);
MapToBean mapTo = new MapToBean();
Map<String, Object> map = mapTo.beanToMap(people);
People p = MapToBean.fromJson(new Gson().toJson(map), People.class);
System.out.println(JSON.toJSONString(p));
}
/**
* 任意类型转map
*
* @param obj 任意类型的bean
* @return map
*/
public Map<String, Object> beanToMap(People obj) {
//bean转map
Map<String, Object> resMap = new Gson().fromJson(new Gson().toJson(obj), new TypeToken<Map<String, Object>>() {
}.getType());
resMap.forEach((k, v) -> {
System.out.println("key==" + k + ",value==" + v);
});
return resMap;
}
/**
* json转对象 !!!!
* <p>
* 传入什么类型 ,就返回什么类型T
* 转为对象,list,map都可以
* @param json 字符串(通过 new Gson().toJson(obj) 返回 json)
* @param classOfT 对象类型
* @return 对象
*/
public static <T> T fromJson(String json, Class<T> classOfT) throws JsonSyntaxException {
return new Gson().fromJson(json, classOfT);
}
/**
* @param obj 转 T
* @param classOfT 对象类型
* @return 对象
*/
public static <T> T objToT(Object obj, Class<T> classOfT) throws JsonSyntaxException {
return new Gson().fromJson(new Gson().toJson(obj), classOfT);
}
}
//obj转为list<指定的对象>
Object obj = commonResponse.getData();
String dataJson = GsonUtil.toJson(obj);
ArrayList<ProvinceDto> list = new Gson().fromJson(dataJson, new TypeToken<List<ProvinceDto>>() {
}.getType());
HashMap类里面的 常量为什么外部拿不到?
static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; 2的4次幂
1.这个常量没有写访问权限修饰符,也就是本类和本包访问权限.外部的 HashMap对象不行,即使继承HashMap也拿不到.
2.HashMap中有多个内部类.我们知道,内部类是可以访问所在外部类的全部变量和方法的(包括private). 也实现了封装的目的.