gpt4 book ai didi

java - 避免 gson 将 json 字符串反序列化为 LinkedHashMap 类成员

转载 作者:行者123 更新时间:2023-12-01 11:59:23 28 4
gpt4 key购买 nike

目前,如果我想避免 gson 将 json 字符串反序列化为 LinkedHashMap ,我会使用以下代码

HashMap<Integer, String> map = gson.fromJson(json_string,  new TypeToken<HashMap<Integer, String>>(){}.getType());

但是,我有以下类(class)

public static class Inventory {
public Map<Integer, String> map1 = new HashMap<Integer, String>();
public Map<Integer, String> map2 = new HashMap<Integer, String>();
}

如果我使用Inventory result = gson.fromJson(json_string, Inventory.class); ,我的Inventory实例的类成员为 LinkedHashMap

如何强制反序列化 json 字符串,以具有 HashMap作为类(class)成员?

这是工作代码示例

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import java.util.HashMap;
import java.util.Map;

/**
*
* @author yccheok
*/
public class Gson_tutorial {
public static class Inventory {
public Map<Integer, String> map1 = new HashMap<Integer, String>();
public Map<Integer, String> map2 = new HashMap<Integer, String>();
}

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
{
Map<Integer, String> map= new HashMap<Integer, String>();
map.put(2, "cake");

final Gson gson = new GsonBuilder().create();
final String json_string = gson.toJson(map);
// {"2":"cake"}
System.out.println(json_string);

HashMap<Integer, String> result = gson.fromJson(json_string, new TypeToken<HashMap<Integer, String>>(){}.getType());
// class java.util.HashMap
System.out.println(result.getClass());
}

{
Inventory inventory = new Inventory();
inventory.map1.put(2, "cake");
inventory.map2.put(3, "donut");

final Gson gson = new GsonBuilder().create();
final String json_string = gson.toJson(inventory);
// {"map1":{"2":"cake"},"map2":{"3":"donut"}}
System.out.println(json_string);

Inventory result = gson.fromJson(json_string, Inventory.class);
// class java.util.LinkedHashMap
System.out.println(result.map1.getClass());
// class java.util.LinkedHashMap
System.out.println(result.map2.getClass());
}
}
}

最佳答案

将您的字段声明为 HashMap。如果不这样做,您将需要使用自定义解串器。

但是如果您使用 Map,为什么要关心它是 LinkedHashMap 还是 HashMap

关于java - 避免 gson 将 json 字符串反序列化为 LinkedHashMap 类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28097902/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com