-
Notifications
You must be signed in to change notification settings - Fork 511
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
默认配置会使用BigInteger来parse大数值,无法设置为Long #2612
Labels
Milestone
Comments
为什么有这个需求啊? |
https://oss.sonatype.org/content/repositories/snapshots/com/alibaba/fastjson2/fastjson2/2.0.51-SNAPSHOT/ public abstract class JSONReader {
public enum Feature {
/**
* Feature that determines whether JSON integral (non-floating-point)
* numbers are to be deserialized into {@link java.math.BigInteger}s
* if only generic type description (either {@link Object} or
* {@link Number}, or within untyped {@link java.util.Map}
* or {@link java.util.Collection} context) is available.
* If enabled such values will be deserialized as
* {@link java.math.BigInteger}s;
* if disabled, will be deserialized as "smallest" available type,
* which is either {@link Integer}, {@link Long} or
* {@link java.math.BigInteger}, depending on number of digits.
* <p>
* Feature is disabled by default, meaning that "untyped" integral
* numbers will by default be deserialized using whatever
* is the most compact integral type, to optimize efficiency.
* @since 2.0.51
*/
UseBigIntegerForInts(1 << 29),
/**
* Feature that determines how "small" JSON integral (non-floating-point)
* numbers -- ones that fit in 32-bit signed integer (`int`) -- are bound
* when target type is loosely typed as {@link Object} or {@link Number}
* (or within untyped {@link java.util.Map} or {@link java.util.Collection} context).
* If enabled, such values will be deserialized as {@link java.lang.Long};
* if disabled, they will be deserialized as "smallest" available type,
* {@link Integer}.
*<p>
* Note: if {@link #UseBigIntegerForInts} is enabled, it has precedence
* over this setting, forcing use of {@link java.math.BigInteger} for all
* integral values.
*<p>
* Feature is disabled by default, meaning that "untyped" integral
* numbers will by default be deserialized using {@link java.lang.Integer}
* if value fits.
*
* @since 2.0.51
*/
UseLongForInts(1 << 30);
}
}
|
最近在做fastjson1到2升级时,默认行为被更改了,导致很多地方需要手动修改,希望可以通过参数全局配置,感谢大佬! |
https://github.com/alibaba/fastjson2/releases/tag/2.0.51 |
# for free
to join this conversation on GitHub.
Already have an account?
# to comment
问题:
![git2](https://private-user-images.githubusercontent.com/71310861/332625598-2c1e5894-738e-4b99-a96c-79a59eb2170f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2ODAxMTYsIm5iZiI6MTczOTY3OTgxNiwicGF0aCI6Ii83MTMxMDg2MS8zMzI2MjU1OTgtMmMxZTU4OTQtNzM4ZS00Yjk5LWE5NmMtNzlhNTllYjIxNzBmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE2VDA0MjMzNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWVlYWZmZDE3MjVlOWIzNmQwYWUyMzE0NzBjYjZiNTYwZGMwMjAyMTZhMjU0MzdkZWEzNjQ1NGNhYmUxZjI5ZGMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.jdX7C0RMKlM1L5xDTJjhDyTV2FEX65MSYFN4-hfQRQ4)
测试fastjson1默认反序列化大数值为long:
fastjson2默认反序列化大数值为BigInteger,且无法修改:
![git1](https://private-user-images.githubusercontent.com/71310861/332625591-4229d5e3-7c98-408d-aae4-06a72f86502b.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2ODAxMTYsIm5iZiI6MTczOTY3OTgxNiwicGF0aCI6Ii83MTMxMDg2MS8zMzI2MjU1OTEtNDIyOWQ1ZTMtN2M5OC00MDhkLWFhZTQtMDZhNzJmODY1MDJiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE2VDA0MjMzNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWJmYWMyMTQzMmE3YzZmMTNkNDM4ZDI1MmJkYTFmMWE4YjNjNDg2MTc4YjY0MDI4M2I5NmNhMjQ5MTVjMzU2ZDkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.9zd1bftQrxPzfc_aC_1JvTKs8fUXVuxXs76DuyDkG7Y)
只能通过自定义setter方法进行设置:
![git4](https://private-user-images.githubusercontent.com/71310861/332626029-f980f9a7-369e-4aad-bf34-337ae1c1c2ab.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2ODAxMTYsIm5iZiI6MTczOTY3OTgxNiwicGF0aCI6Ii83MTMxMDg2MS8zMzI2MjYwMjktZjk4MGY5YTctMzY5ZS00YWFkLWJmMzQtMzM3YWUxYzFjMmFiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE2VDA0MjMzNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWRlODUyNmZhMDcyZjY0MmJlY2UzMTc5NzYzZDY0ODU5NTE1MzFkY2ZlNzUzY2EyZmFiZWFkZjU2N2NjM2FkOWQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.sNSwDVUu6SqA2QL0_UlhGyvQXSIPPOyZb5NmhV37aPE)
小数有类似的配置,但是整数没有找到:
![git3](https://private-user-images.githubusercontent.com/71310861/332625906-e4bd85d9-831b-4ace-a0e0-a70dba33d08c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2ODAxMTYsIm5iZiI6MTczOTY3OTgxNiwicGF0aCI6Ii83MTMxMDg2MS8zMzI2MjU5MDYtZTRiZDg1ZDktODMxYi00YWNlLWEwZTAtYTcwZGJhMzNkMDhjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE2VDA0MjMzNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWMwN2VhZTRiMjhlNTIzMmRlY2JlYmE3YTFkOTc4OGY4YjM2N2U5MWI0MzA4ZjI1Y2QxNWViYWE0MTc3NjgzYzYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.kKPmd0Tn6BrsyGUm6JQOFXuFHTumAPev7jQ7C2Hvndc)
希望添加类似配置,可以选择反序列化大数值的默认行为。
The text was updated successfully, but these errors were encountered: