gpt4 book ai didi

java - 如何将 json 转换为 Map 确保整数为 Integer

转载 作者:行者123 更新时间:2023-12-02 01:58:53 25 4
gpt4 key购买 nike

我有一个 json 对象,其中包含值为 String 的嵌套对象, DoubleInteger 。当我转换为Map时,假设IntegerDouble 。我该如何改变这个?

Map<String, Object> map = response.getJson();

我的回复包含字段

{
....
"age" : 14,
"average" : 12.2,
....
}

average正在正确转换为 Double但年龄预计为 Integer但正在convertedDoubleMap

最佳答案

您可以通过对Map进行后处理来实现此目的,在可能的情况下将Double值转换为Integer,例如

static void convertIntegerToDouble(Map<String, Object> map) {
Map<String, Object> updates = new HashMap<>();
for (Iterator<Entry<String, Object>> iter = map.entrySet().iterator(); iter.hasNext(); ) {
Entry<String, Object> entry = iter.next();
Object value = entry.getValue();
if (value instanceof Map) {
@SuppressWarnings("unchecked")
Map<String, Object> submap = (Map<String, Object>) value;
convertIntegerToDouble(submap);
} else if (value instanceof Double) {
double d = ((Double) value).doubleValue();
int i = (int) d;
if (d == i)
updates.put(entry.getKey(), i);
}
}
map.putAll(updates);
}

测试

Map<String, Object> map = new HashMap<>(Map.of(
"A", 42.0,
"B", new HashMap<>(Map.of(
"K", 42.0,
"L", new HashMap<>(Map.of(
"R", 42.0,
"S", 3.14
)),
"M", 3.14
)),
"C", 3.14,
"D", "Foo"
));
System.out.println(map);
convertIntegerToDouble(map);
System.out.println(map);

输出

{A=42.0, B={K=42.0, L={R=42.0, S=3.14}, M=3.14}, C=3.14, D=Foo}
{A=42, B={K=42, L={R=42, S=3.14}, M=3.14}, C=3.14, D=Foo}

关于java - 如何将 json 转换为 Map<String, Object> 确保整数为 Integer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57385656/

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