1. 字符串

    对于一个json字符串
String str = "{"specItem":"[红, 大]","specName":"颜色, 尺寸","goodsPrice":2,"stock":0}";
//以上是未转义过的,如果你想直接写在代码中测试的话,记得转义,例如如下:(请勿直接复制下面)
String str = "{\"specItem\":\"[红, 大]\",\"specName\":\"颜色, 尺寸\",\"goodsPrice\":2,\"stock\":0}";
  1. json转化

    以下是错误示范
Map<String,String> map = (Map<String,String>) JSON.parse(s);
  1. 获取数据
int stock = Integer.parseInt(map.get("stock"));

此时会报错

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer

  1. 坑的原因

    通过JSON.parse()获得的Map,我们打印就能看出来
{"stock":1,"specItem":"[红, 大]","specName":"颜色, 尺寸","goodsPrice":1}

我们可以看到,对于stock来说,他的值并不是字符串"1",而是1;,直接将其转化为String的时候就会报错

相当于写了一个String str = 1;

  1. 解决方法

    所以我们不能使用(Map<String,String>) JSON.parse(s);来强转

    而应该使用(Map<String,Object>) JSON.parse(s);

    之后在获取值的时候,调用toString()将其转化为String
int stock = Integer.parseInt(map.get("stock").toString);

fastjson将json转为Map<String,String>踩坑的更多相关文章

  1. fastjson在将Map<Integer, String>转换成JSON字符串时,出现中文乱码问题

    fastjson在将Map<Integer, String>转换成JSON字符串时,出现中文乱码问题. 先记下这个坑,改天在看看是怎么导致的,暂时通过避免使用Integer作为键(使用St ...

  2. net.sf.json将string转为map

    背景 改一个以前的项目,项目里只有这个包,虽然我想用gson或者fastjson,然而并不想引入新的jar.于是使用这个,特此记录,感觉贼不好用. 实现代码 entity.getData()的值:{a ...

  3. json与list,map,String之间的互转

    package tools; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import j ...

  4. alibaba fastjson List<Map<String, String>>2Str

    import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map; impo ...

  5. JSON数组形式字符串转换为List<Map<String,String>>的8种方法

    package com.zkn.newlearn.json; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArr ...

  6. JSON数组形式字符串转换为List<Map<String,String>>的几种方法

    package com.zkn.newlearn.json; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArr ...

  7. 011-JSON、JSONObject、JSONArray使用、JSON数组形式字符串转换为List<Map<String,String>>的8种方法

    一.JSON数据格式 1.1.常用JSON数据格式 1.对象方式:JSONObject的数据是用 { } 来表示的, 例如: { "id" : "123", & ...

  8. Map<String,String>转Json转Base64

    Map<String,String> configMap = new HashMap<String,String>();System.out.println("JSO ...

  9. Android List<Map<String,String>转json(例子)

    package com.armslee.json.test.cases; import java.util.ArrayList; import java.util.HashMap; import ja ...

随机推荐

  1. VMware中安装CentOS Linux release 7.4.1708 (Core)

    本篇文章主要介绍了VMware安装Centos7超详细过程(图文),具有一定的参考价值,感兴趣的小伙伴们可以参考一下 1.软硬件准备 软件:推荐使用VMwear,我用的是VMwear 12 镜像:Ce ...

  2. hive -- 外部表、内部表、临时表

    1.外部表 关键字:EXTERNAL 外部表创建时需要指定LOCATION 删除外部表时,数据不被删除 CREATE EXTERNAL TABLE page_view(viewTime INT, us ...

  3. jQuery中的属性过滤选择器(四、五):[attribute] 、[attribute=value]、[attribute!=value] 、[attribute^=value] 等

    <!DOCTYPE html> <html> <head> <title>属性过滤选择器</title> <meta http-equ ...

  4. Spring Data JPA:解析CriteriaBuilder

    源码 在Spring Data JPA相关的文章[地址]中提到了有哪几种方式可以构建Specification的实例,该处需要借助CriteriaBuilder,回顾一下Specification中t ...

  5. Linux从头学11:理解了这三个概念,才能彻底理解任务管理和任务切换

    作 者:道哥,10+年的嵌入式开发老兵. 公众号:[IOT物联网小镇],专注于:C/C++.Linux操作系统.应用程序设计.物联网.单片机和嵌入式开发等领域. 公众号回复[书籍],获取 Linux. ...

  6. Week2 题解

    T1及题解 T2 CF1207E 首先,异或这个位运算有个很好的性质:x^y^y=x 于是,可以有两种解决方法: 法一 既然让猜原来的数是多少,当它异或了一个其他值val的时候,再异或val就会变回原 ...

  7. Docker(24)- docker login 命令详解

    如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html 作用 登录 Docker 镜像仓 ...

  8. 运输层协议:TCP和UDP

    运输层简介 运输层的通信实体不再是主机,而是主机中的进程.运输层的通信是一台主机的进程和另一台主机的进程进行数据交换. 运输层作用 运输层向上层的应用层提供通信服务 运输层为进程提供端到端的通信 运输 ...

  9. C# Dapper基本三层架构使用 (四、WinForm UI层)

    UI层主要功能是显示数据和接受传输用户的数据,可以在为网站的系统运行提供交互式操作界面,表示层的应用方式比较常见,例如Windows窗体和Web页面. 在项目中增加WinForm应用程序,结构如下 添 ...

  10. java9的JShell小工具和编译器两种自动优化

    一.按顺序逐步执行的脚本程序: 二.编译器自动优化 1.不超数据类型范围编译器自动添加强转操作: 2.一但发生运算,byte/short/char都会自动提升为Int,当只有常量参与运算时,编译器会先 ...