gpt4 book ai didi

integer - Json String包含整型值,反序列化为HashMap,Integer转为double值

转载 作者:行者123 更新时间:2023-12-05 05:28:28 26 4
gpt4 key购买 nike

public static void main(String[] args) {

Gson g = new GsonBuilder()
.setPrettyPrinting()
.enableComplexMapKeySerialization()
.serializeSpecialFloatingPointValues()
.setLongSerializationPolicy(LongSerializationPolicy.DEFAULT)
.setPrettyPrinting()
//.registerTypeAdapter(HashMap.class, new HashMapDeserializer())
.create();

HashMap<Object, Object> h = new HashMap<Object, Object>();
h.put("num1", 10);
h.put("num2", 20);
h.put("num3", 20.0);
h.put("num4", "<>");
h.put("num5", "~!@#$%^&*()_+=-`,.<>?/:;[]{}|");

String jsonStr = g.toJson(h);
System.out.println("JsonString::"+jsonStr);
/*Output below ::
*
JsonString::{
"num4": "\u003c\u003e",
"num5": "~!@#$%^\u0026*()_+\u003d-`,.\u003c\u003e?/:;[]{}|",
"num2": 20,
"num3": 20.0,
"num1": 10
}
*/

h = g.fromJson(jsonStr, HashMap.class);

System.out.println("convert from json String :>"+h);
/*Output below:
convert from json String :>{num4=<>, num5=~!@#$%^&*()_+=-`,.<>?/:;[]{}|, num2=20.0, num3=20.0, num1=10.0}
*/

int num1= (Integer) h.get("num1");
System.out.println(num1);
}

Exception in thread "main" java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Integer
at com.ps.multiupload.servlet.FileUploadUtil.main(FileUploadUtil.java:52)

最佳答案

如果你告诉 Gson 你想要的类型,它会工作得最好。否则,它将始终只使用它最喜欢的类型:Map、List、String、Double 和 Boolean。

要序列化您的混合类型 HashMap ,请创建一个知道它需要哪些类型的 Java 类:

class NumNumNum {
int num1;
int num2;
double num3;
String num4;
String num5;
}

将 JSON 反序列化为这样的类将为 Gson 提供所需的提示。只有一个 Map<Object, Object>它只做最简单的事情。

关于integer - Json String包含整型值,反序列化为HashMap,Integer转为double值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10256397/

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