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. vue 引入 leaflet1.4.0

    安装leaflet cnpm install leaflet@~1.4.0 --save // 在main.js 中设置如下 //引入样式文件 import 'leaflet/dist/leaflet ...

  2. spring学习日志二

    一.spring依赖注入的方式 1.通过set方法来完成注入 <bean id="student" class="com.zhiyou100.xz.spring.S ...

  3. .net core signalR 服务端强制中断用户连接

    .net core signalR 服务端断开连接 { } { } *:first-child { } *:last-child { } { } { } { } { } { } { } { } { } ...

  4. tomcat Debug 启动

    eclipse有web工程,将打包为war包(export -> War file) 将打包好的war 包放在tomcat 的webapps下面: 配置debug: 参考来自 http://bl ...

  5. 关于servlet中doGet和doPost乱码再一次理解

    今天系统的整理了在web项目下,出现的编码问题,下面就做一些总结: 首先对HTTP协议中对GET和POST的定义:   GET POST 后退按钮/刷新 无害 数据会被重新提交(浏览器应该告知用户数据 ...

  6. docker《三》单机部署项目容器,nginx负载均衡

    接着<二> 创建一个网段(和二在一个网段) docker network create --subnet=172.19.0.0/24 pro-net docker run -d --nam ...

  7. Hadoop及Hbase部署

    原文转自:https://www.cnblogs.com/itzgr/p/10233932.html作者:木二 目录 一 环境准备 1.1 相关环境 1.2 网络环境 二 基础环境配置 2.1 配置相 ...

  8. BUUCTF-[CISCN2019 总决赛 Day2 Web1]Easyweb

    BUUCTF-[CISCN2019 总决赛 Day2 Web1]Easyweb 就给了一个这个... 先打上robots.txt看看 发现有源码备份,但不是index.php.bak... 看源码发现 ...

  9. 存储系统管理(一)——Linux系统的设备和分区管理

    1.设备名称的理解 /dev/sda1? sata硬盘,a1表示第一块硬盘中的第一个分区 /dev/cdrom 光驱 /dev/mapper/*? 系统中的虚拟设备 2.发现系统中的设备 ? fdis ...

  10. container of()函数简介

    在linux 内核编程中,会经常见到一个宏函数container_of(ptr,type,member), 但是当你通过追踪源码时,像我们这样的一般人就会绝望了(这一堆都是什么呀? 函数还可以这样定义 ...