本文利用Gson来做实现,先导入:
implementation 'com.google.code.gson:gson:2.8.6'
主要利用的是JsonObject里的entrySet()方法,相关Demo代码如下:
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class JsonConvertDemo {
public static String buildMapJsonObject() {
Map<String, TestBean> map = new HashMap<>();
map.put("key1", new TestBean(1, "标题1"));
map.put("key2", new TestBean(2, "标题3"));
map.put("key3", new TestBean(3, "标题3"));
//生成JSONObject
return new Gson().toJson(map);
}
public static Map<String, TestBean> convertToMap() {
Map<String, TestBean> map = new HashMap<>();
String str = buildMapJsonObject();
System.out.println(str);
JsonObject jsonObject = new Gson().fromJson(str, JsonObject.class);
//关键方法
Set<Map.Entry<String, JsonElement>> entrySet = jsonObject.entrySet();
for (Map.Entry<String, JsonElement> entry : entrySet) {
TestBean bean = new Gson().fromJson(entry.getValue(), TestBean.class);
map.put(entry.getKey(), bean);
}
System.out.println(map);
return map;
}
static class TestBean {
int id;
String title;
public TestBean(int id, String title) {
this.id = id;
this.title = title;
}
}
}
运行后生成的Json数据格式化如下图:
运行后Debug到的Map数据如下图: