java - 如何防止 Gson 将长数字(一个 json 字符串)转换为科学记数法格式?

我需要将 json 字符串转换为 java 对象并将其显示为 long。 json字符串是一个固定的长数字数组:

{numbers
[ 268627104, 485677888, 506884800 ] }

除了以 0 结尾的数字外,转换代码在所有情况下都可以正常工作。它将这些代码转换为科学记数法数字格式:

   public static Object fromJson(HttpResponse response, Class<?> classOf)
    throws IOException {
    InputStream instream = response.getResponseInputStream();                   

    Object obj = null;
    try {
        Reader reader = new InputStreamReader(instream, HTTP.UTF_8);

        Gson gson = new Gson();

        obj = gson.fromJson(reader, classOf); 

        Logger.d(TAG, "json --> "+gson.toJson(obj));
    } catch (UnsupportedEncodingException e) {
        Logger.e(TAG, "unsupported encoding", e);
    } catch (Exception e) {
        Logger.e(TAG, "json parsing error", e);
    }

    return obj;
}

实际结果: Java对象:268627104、485677888、5.068848E+8

请注意,最后一个数字已转换为科学计数法格式。谁能建议可以做些什么来解决它或防止它或撤消它?我正在使用 Gson v1.7.1

最佳答案

如果您可以选择序列化为字符串,您可以通过以下方式配置 GSON:

GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.setLongSerializationPolicy( LongSerializationPolicy.STRING );
Gson gson = gsonBuilder.create();

这将产生类似:

{numbers : [ "268627104", "485677888", "506884800" ] }

https://stackoverflow.com/questions/11586299/

相关文章:

json - 转义正则表达式以获取有效的 JSON

javascript - JSON.stringify 抛出 RangeError : Invali

php - 添加json文件注释

c# - 如何在 WebAPI 后端 C# 上接收 JSON 数据?

javascript - jQuery、AJAX、JSONP : how to actually s

c# - 在 JSON 反序列化期间没有为 'System.String' 类型定义无参数构造函数

java - 规范化 JSON 文件

javascript - 如何将输入文件对象序列化为 JSON?

ajax - jquery mobile可折叠和galaxy tab 10.1 json响应给出随机

json - LibreOffice Calc 是否支持 JSON 文件导入/排序?