Как попросить fastjson2 десериализовать массив decimal/int как примитивный массив (а не список чисел в штучной упаковке)JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как попросить fastjson2 десериализовать массив decimal/int как примитивный массив (а не список чисел в штучной упаковке)

Сообщение Anonymous »

Можно ли с помощью fastjson2 десериализовать массив JSON в примитивный массив чисел с плавающей запятой/целых чисел? В идеале без упаковки/распаковки чисел.
Я обнаружил, что есть опция 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"]}
Но я хочу, чтобы он использовал float[] для ключа TestEnum.C при его десериализации, а не JSONArray ().


Подробнее здесь: https://stackoverflow.com/questions/792 ... ray-not-li
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»