如何反序列化并将所有数字转换为 Long ?

问题描述 投票:0回答:2

Jackson 反序列化并将所有数字(如果值在整数范围内)转换为整数,而不是转换为长整型。我想将所有值转换为 Long。 是否存在简单的问题解决方案?

json serialization jackson
2个回答
6
投票

Jackson 反序列化为您指定的类型,因此如果您将属性声明为 long 或 Long 类型,它会将其构造为 long。但也许您正在绑定到像

Map
这样的“无类型”结构?如果所有值都是
Long
类型,您可以适当地声明类型,例如:

Map<String,Long> map = objectMapper.readValue(json, new TypeReference<Map<String,Long>>() { });

或者可以为

Object.class
添加具有不同处理方式的自定义解串器(默认解串器为
org.codehaus.jackson.map.deser.UntypedObjectDeserializer
)。

如果我知道你实际上想做什么可能会有所帮助 -

Integer
Long
都是数字,所以通常区别并不重要......那么需要长整型的原因是什么?


0
投票

Não tô conseguindo abrir o kinemaster fica toda hora dizendo isso

java.lang.ClassCastException:java.lang.Long 无法转换为 java.lang.Integer at l.900.invoke(来源未知:118) 在 java.lang.reflect.Proxy.invoke(Proxy.java:1006) 在 $Proxy2.getPackageInfo(来源未知) 在 android.content.pm.PackageManager.getPackageInfoAsUserUncached(PackageManager.java:10523) 在 android.content.pm.PackageManager.-$$Nest$smgetPackageInfoAsUserUncached(未知来源:0) 在 android.content.pm.PackageManager$2.recompute(PackageManager.java:10536) 在 android.content.pm.PackageManager$2.recompute(PackageManager.java:10533) 在 android.app.PropertyInvalidatedCache.query(PropertyInvalidatedCache.java:939) 在 android.content.pm.PackageManager.getPackageInfoAsUserCached(PackageManager.java:10550) 在 android.app.ApplicationPackageManager.getPackageInfoAsUser(ApplicationPackageManager.java:249) 在 android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:214) 在 android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:208) 在 com.google.android.gms.common.GooglePlayServicesUtilLight.o(com.google.android.gms:play-services-basement@@17.2.1:4) 在 com.google.android.gms.common.GooglePlayServicesUtilLight.i(com.google.android.gms:play-services-basement@@17.2.1:11) 在 com.google.android.gms.common.GoogleApiAvailabilityLight.j(com.google.android.gms:play-services-basement@@17.2.1:1) 在 com.google.android.gms.common.GoogleApiAvailability.j(com.google.android.gms:play-services-base@@17.2.1:1) 在 com.google.android.gms.common.internal.GoogleApiAvailabilityCache.b(com.google.android.gms:play-services-base@@17.2.1:9) 在 com.google.android.gms.common.api.internal.GoogleApiManager$zaa.a(com.google.android.gms:play-services-base@@17.2.1:3) 在 com.google.android.gms.common.api.internal.GoogleApiManager.p(com.google.android.gms:play-services-base@@17.2.1:7) 在 com.google.android.gms.common.api.internal.GoogleApiManager.handleMessage(com.google.android.gms:play-services-base@@17.2.1:25) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 com.google.android.gms.internal.base.zap.dispatchMessage(com.google.android.gms:play-services-base@@17.2.1:1) 在 android.os.Looper.loopOnce(Looper.java:211) 在 android.os.Looper.loop(Looper.java:300) 在 android.os.HandlerThread.run(HandlerThread.java:67)

© www.soinside.com 2019 - 2024. All rights reserved.