LINUX.ORG.RU

История изменений

Исправление Bioreactor, (текущая версия) :

Скорее всего он ведёт себя так.

Вот мой простенький пример-импровизация

package hello;

import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

public class Test1{
    
    public static void main(String[] args) {

        String str = String.format("{\"pi\":3.14}");
        JsonObject asJsonObject = new JsonParser().parse(str).getAsJsonObject();
        
        // неопределенность
        Object o = asJsonObject.get("pi").getAsNumber();
        System.out.printf("%s %s\n", o, o.getClass());
        o = asJsonObject.get("pi").getAsInt();
        System.out.printf("%s %s\n", o, o.getClass());
        o = asJsonObject.get("pi").getAsFloat();
        System.out.printf("%s %s\n", o, o.getClass());

        
        // по спеке пишем собственный обработчик
        if (asJsonObject.get("pi").getAsString().contains(".")) {  // и т.п.
            System.out.println(asJsonObject.get("pi").getAsFloat());
        } else {
            System.out.println(asJsonObject.get("pi").getAsInt());
        }
    }
}

$ java Test1
3.14 class com.google.gson.internal.LazilyParsedNumber
3 class java.lang.Integer
3.14 class java.lang.Float
3.14

Так что маленькую библиотечку собственную за полчаса можно и самим набросать.

-------

А что по этому поводу скажет сам ЦАРЬ?

Исходная версия Bioreactor, :

Скорее всего он ведёт себя так.

Вот мой простенький пример-импровизация

package hello;

import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

public class Hello1 {
    
    public static void main(String[] args) {

        String str = String.format("{\"pi\":3.14}");
        JsonObject asJsonObject = new JsonParser().parse(str).getAsJsonObject();
        
        // неопределенность
        Object o = asJsonObject.get("pi").getAsNumber();
        System.out.printf("%s %s\n", o, o.getClass());
        o = asJsonObject.get("pi").getAsInt();
        System.out.printf("%s %s\n", o, o.getClass());
        o = asJsonObject.get("pi").getAsFloat();
        System.out.printf("%s %s\n", o, o.getClass());

        
        // по спеке пишем собственный обработчик
        if (asJsonObject.get("pi").getAsString().contains(".")) {  // и т.п.
            System.out.println(asJsonObject.get("pi").getAsFloat());
        } else {
            System.out.println(asJsonObject.get("pi").getAsInt());
        }
    }
}

$ java Test1
3.14 class com.google.gson.internal.LazilyParsedNumber
3 class java.lang.Integer
3.14 class java.lang.Float
3.14

Так что маленькую библиотечку собственную за полчаса можно и самим набросать.

-------

А что по этому поводу скажет сам ЦАРЬ?