Я обнаружил, что есть опция JSONReader.Feature.UseDoubleForDecimals, которая помогает мне на полпути, но я не могу понять, как чтобы он использовал примитивные массивы вместо List и т. д.
Он должен использовать fastjson2 (поэтому использование Jackson не является вариантом).
Это код:
Код: Выделить всё
void test() {
enum TestEnum {
A, B, C
}
// Prepare data
Map testData = Map.of(
TestEnum.A, "test",
TestEnum.B, new String[]{"test1", "test2"},
TestEnum.C, new float[]{1.0f, 2.0f, 3.0f}
);
// Serialize
String serialized = JSON.toJSONString(testData);
System.out.println("Serialized: " + serialized);
JSONObject read = JSON.parseObject(serialized, JSONReader.Feature.UseDoubleForDecimals);
for (Map.Entry stringObjectEntry : read.entrySet()) {
System.out.println(stringObjectEntry.getKey() + " " + stringObjectEntry.getValue().getClass() + " " + (stringObjectEntry.getValue() instanceof List));
}
System.out.println(read);
}
Код: Выделить всё
Serialized: {"A":"test","C":[1.0,2.0,3.0],"B":["test1","test2"]}
A class java.lang.String false
C class com.alibaba.fastjson2.JSONArray true
B class com.alibaba.fastjson2.JSONArray true
{"A":"test","C":[1.0,2.0,3.0],"B":["test1","test2"]}
Код: Выделить всё
List
Подробнее здесь: https://stackoverflow.com/questions/792 ... ray-not-li