2016-12-28 2 views
1

Мне нужно создать JSON в этом формате:gson - длинные значения массива становятся поплавком значение

{ 
    "array": [ 
    1482922777223, 
    0.014221191, 
    0.014221191, 
    0.014221191 
    ] 
} 

Data.class

public class Data { 

    @SerializedName("array") 
    @Expose 
    private List<Float> array = null; 
} 

для преобразования объекта в JSON строку я использую gson библиотеки.

List<Float> list = new ArrayList<>(); 
list.add((float)1482922777223); 
list.add(0.014221191); 
list.add(0.014221191); 
list.add(0.014221191); 
Data data = new Data(list); 
Gson gson = new Gson(); 
String json = gson.toJson(data); 

Строка результата:

{ 
    "array": [ 
    1.4829219E12, <--- HOW TO GET HERE 1482922777223? 
    0.014221191, 
    0.014221191, 
    0.014221191 
    ] 
} 

Пожалуйста, помогите!

ответ

0

Вам необходимо зарегистрироваться TypeAdapter для значений Float.

например:

GsonBuilder gsonBuilder = new GsonBuilder();   
gsonBuilder.registerTypeAdapter(Float.class, new JsonSerializer<Float>() { 
    @Override 
    public JsonElement serialize(final Float src, final Type typeOfSrc, final JsonSerializationContext context) { 
     BigDecimal value = BigDecimal.valueOf(src);  
     return new JsonPrimitive(value); 
    } 
}); 

Gson gson = gsonBuilder.create(); 
String json = gson.toJson(data); 

Выходные:

{ 
    "array": [ 
    1482922777223, 
    0.014221191, 
    0.014221191, 
    0.014221191 
    ] 
} 
+0

спасибо !!! – phnmnn

Смежные вопросы