key类
public class KeyVal {
private int keyId;
private String name;
public KeyVal(int keyId, String name) {
this.keyId = keyId;
this.name = name;
}
public int getKeyId() {
return keyId;
}
public void setKeyId(int keyId) {
this.keyId = keyId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public int hashCode() {
int result = 31 * keyId + name.hashCode();
return result;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof KeyVal) {
KeyVal keyVal = (KeyVal) obj;
if (keyVal.getName() == null | name == null) {
return false;
} else {
return name.equalsIgnoreCase(keyVal.getName())&& keyVal.getKeyId()==keyId;
}
}
return false;
}
@Override
public String toString() {
return "KeyVal{" +
"keyId=" + keyId +
", name='" + name + '\'' +
'}';
}
}
namespace类
public class NamespaceVal {
private int namespaceId;
private String name;
public NamespaceVal(int namespaceId, String name) {
this.namespaceId = namespaceId;
this.name = name;
}
@Override
public int hashCode() {
int result = 31 * namespaceId + name.hashCode();
return result;
}
public int getNamespaceId() {
return namespaceId;
}
public void setNamespaceId(int namespaceId) {
this.namespaceId = namespaceId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof NamespaceVal) {
NamespaceVal namespaceVal = (NamespaceVal) obj;
if (namespaceVal.getName() == null | name == null) {
return false;
} else {
return name.equalsIgnoreCase(namespaceVal.getName())&& namespaceVal.getNamespaceId()==namespaceId;
}
}
return false;
}
@Override
public String toString() {
return "NamespaceVal{" +
"namespaceId=" + namespaceId +
", name='" + name + '\'' +
'}';
}
}
测试类
public class Test {
public static void main(String[] args) {
Map<KeyVal,Map<NamespaceVal,HashMap<Integer, String>>> keyToMap = new HashMap<>();
KeyVal mainKey1 = new KeyVal(1,"一年级");
KeyVal mainKey2 = new KeyVal(2,"二年级");
NamespaceVal namespaceVal11 = new NamespaceVal(11,"一年一班");
NamespaceVal namespaceVal12 = new NamespaceVal(11,"一年二班");
NamespaceVal namespaceVal21 = new NamespaceVal(11,"二年一班");
NamespaceVal namespaceVal22 = new NamespaceVal(11,"二年二班");
HashMap<Integer,String> group11 = new HashMap<>();
group11.put(1,"一年一班1组组长");
group11.put(2,"一年一班2组组长");
HashMap<Integer,String> group12 = new HashMap<>();
group12.put(1,"一年二班1组组长");
group12.put(2,"一年二班2组组长");
HashMap<Integer,String> group21 = new HashMap<>();
group21.put(1,"二年一班1组组长");
group21.put(2,"二年一班2组组长");
HashMap<Integer,String> group22 = new HashMap<>();
group22.put(1,"二年二班1组组长");
group22.put(2,"二年二班2组组长");
Map<NamespaceVal,HashMap<Integer, String>> yinianji = new HashMap<>();
yinianji.put(namespaceVal11,group11);
yinianji.put(namespaceVal12,group12);
Map<NamespaceVal,HashMap<Integer, String>> ernianji = new HashMap<>();
ernianji.put(namespaceVal21,group21);
ernianji.put(namespaceVal22,group22);
keyToMap.put(mainKey1,yinianji);
keyToMap.put(mainKey2,ernianji);
Gson gson = new GsonBuilder().disableHtmlEscaping().create();
String jsonStr = gson.toJson(keyToMap);
System.out.println(jsonStr);
Map<String,String> rtn = new HashMap<>();
rtn = gson.fromJson(jsonStr,HashMap.class);
for(String keyVal : rtn.keySet()){
// System.out.println(keyVal);
System.out.println(JSON.parseObject(keyVal,KeyVal.class, Feature.OrderedField));
}
// rtn= JSON.parseObject(jsonStr,LinkedHashMap.class, Feature.OrderedField);
}
}
使用的依赖
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.2.4</version>
</dependency>