ttvc_all 2017-05-24 13:07 采纳率: 50%
浏览 5033
已采纳

java上使用Gson转换长数字的字符串时,被当成了数字处理

直接上代码
public static void main(String[] args) {
String jsonString="{\"list\":[{\"Arrayname\": \"000292603088\",\"LUNID\": \"09FB\",\"Capacity\": \"134.8681640625\",\"UUID\": \"60000970000292603088533030394642\",\"Mode\": \"vmax\"},"
+ "{ \"Arrayname\": \"000292603088\",\"LUNID\":\"09EB\",\"Capacity\":\"134.8681640625\",\"UUID\": \"60000970000292603088533030394542\",\"Mode\":\"vmax\"}]}";
Gson gson = new Gson();

     Map<String, Object > itemmapMap=gson.fromJson(jsonString, Map.class);

        String tolist= itemmapMap.get("list").toString();
        System.out.println("原始信息:"+tolist);

    List<Map<String, Object>> listjson =gson.fromJson(tolist, List.class);
            for (int i = 0; i < listjson.size(); i++) {
                    Map<String, Object> itemMap=new HashMap<String, Object>();
                    itemMap=listjson.get(i);
                    Map<String, String> insertMap=new HashMap<String, String>();

                    insertMap.put("lunId", itemMap.get("UUID").toString());



                System.out.println("转换成了:"+insertMap.get("lunId"));
            }

}
原始信息:[{Arrayname=000292603088, LUNID=09FB, Capacity=134.8681640625, UUID=60000970000292603088533030394642, Mode=vmax}, {Arrayname=000292603088, LUNID=09EB, Capacity=134.8681640625, UUID=60000970000292603088533030394542, Mode=vmax}]

转换成了:6.00009700002926E31
转换成了:6.00009700002926E31

请大神指点,希望数据变成60000970000292603088533030394542,而不是6.00009700002926E31
请问gson是否能指定字段的转换类型

  • 写回答

3条回答 默认 最新

  • ttvc_all 2017-05-25 02:39
    关注

    已经解决了,使用JSONObject来实现了

    public static void main(String[] args) {
        String jsonString="{\"list\":[{\"Arrayname\": \"000292603088\",\"LUNID\": \"09FB\",\"Capacity\": \"134.8681640625\",\"UUID\": \"60000970000292603088533030394642\",\"Mode\": \"vmax\"},"
                + "{ \"Arrayname\": \"000292603088\",\"LUNID\":\"09EB\",\"Capacity\":\"134.8681640625\",\"UUID\": \"60000970000292603088533030394542\",\"Mode\":\"vmax\"}]}";
    

    // tolist=gson.toJson(tolist);
    JSONObject jsonObject=JSONObject.fromObject(jsonString);
    JSONArray listArray= jsonObject.getJSONArray("list");

                for (int i = 0; i < listArray.size(); i++) {
                        Map<String, String> insertMap=new HashMap<String, String>();
    
                        insertMap.put("lunId", listArray.getJSONObject(i).optString("UUID"));
    
    
    
                    System.out.println("转换成了:"+insertMap.get("lunId"));
                }
    
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?