fastjson将json转为Map<String,String>踩坑
- 字符串
对于一个json字符串
String str = "{"specItem":"[红, 大]","specName":"颜色, 尺寸","goodsPrice":2,"stock":0}";
//以上是未转义过的,如果你想直接写在代码中测试的话,记得转义,例如如下:(请勿直接复制下面)
String str = "{\"specItem\":\"[红, 大]\",\"specName\":\"颜色, 尺寸\",\"goodsPrice\":2,\"stock\":0}";
- json转化
以下是错误示范
Map<String,String> map = (Map<String,String>) JSON.parse(s);
- 获取数据
int stock = Integer.parseInt(map.get("stock"));
此时会报错
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
- 坑的原因
通过JSON.parse()获得的Map,我们打印就能看出来
{"stock":1,"specItem":"[红, 大]","specName":"颜色, 尺寸","goodsPrice":1}
我们可以看到,对于stock来说,他的值并不是字符串"1",而是1;,直接将其转化为String的时候就会报错
相当于写了一个String str = 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>踩坑的更多相关文章
- fastjson在将Map<Integer, String>转换成JSON字符串时,出现中文乱码问题
fastjson在将Map<Integer, String>转换成JSON字符串时,出现中文乱码问题. 先记下这个坑,改天在看看是怎么导致的,暂时通过避免使用Integer作为键(使用St ...
- net.sf.json将string转为map
背景 改一个以前的项目,项目里只有这个包,虽然我想用gson或者fastjson,然而并不想引入新的jar.于是使用这个,特此记录,感觉贼不好用. 实现代码 entity.getData()的值:{a ...
- json与list,map,String之间的互转
package tools; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import j ...
- alibaba fastjson List<Map<String, String>>2Str
import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map; impo ...
- JSON数组形式字符串转换为List<Map<String,String>>的8种方法
package com.zkn.newlearn.json; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArr ...
- JSON数组形式字符串转换为List<Map<String,String>>的几种方法
package com.zkn.newlearn.json; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArr ...
- 011-JSON、JSONObject、JSONArray使用、JSON数组形式字符串转换为List<Map<String,String>>的8种方法
一.JSON数据格式 1.1.常用JSON数据格式 1.对象方式:JSONObject的数据是用 { } 来表示的, 例如: { "id" : "123", & ...
- Map<String,String>转Json转Base64
Map<String,String> configMap = new HashMap<String,String>();System.out.println("JSO ...
- Android List<Map<String,String>转json(例子)
package com.armslee.json.test.cases; import java.util.ArrayList; import java.util.HashMap; import ja ...
随机推荐
- C#硬件访问(摄像头、麦克风)
#需要引用:AForge类库.Microsoft.DirectX using System;using System.Windows.Forms;namespace CameraTest{ publi ...
- jsoup的Element类
一.简介 该类是Node的直接子类,同样实现了可克隆接口.类声明:public class Element extends Node 它表示由一个标签名,多个属性和子节点组成的html元素.从这个元素 ...
- java实用资料
1.怎么构造一个线程安全的hashmap?用reentrantreadwritelock2.线程是怎么处理二个以上的对象同时处理一个全局变量 3.读文件为啥不用字符流 4.请求鉴定,各种错误码502- ...
- Inject-APC (Ring3)
1 // APCInject.cpp : 定义控制台应用程序的入口点. 2 // 3 4 #include "stdafx.h" 5 #include "APCInjec ...
- servlet中servletContext的五大作用(五)
1. 获取web的上下文路径 2. 获取全局的参数 3. 作为域对象使用 4. 请求转发 5. 读取web项目的资源文件 package day10.about_serv ...
- 带有附件及图片正文的JavaMail邮件发送
1 package javamail; 2 3 import java.io.UnsupportedEncodingException; 4 import java.util.Properties; ...
- 刷题-力扣-LCP 07. 传递信息
LCP 07. 传递信息 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/chuan-di-xin-xi 著作权归领扣网络所有.商业转 ...
- Confluence7.4安装并破解汉化教程
Confluence是一款由JAVA编写用于企业知识库管理协同软件,多用于构建企业内部WIKI,支持多人协作,共享信息等. 当前系统环境Centos7.9,内存至少2G以上,数据库采用MySQL5.7 ...
- 三.Go微服务--令牌桶实现原理
1. 前言 在上一篇文章 Go微服务: 令牌桶 当中简单的介绍了令牌桶实现的原理,然后利用 /x/time/rate 这个库 10 行代码写了一个基于 ip 的 gin 限流中间件,那这个功能是怎么实 ...
- ❤️用武侠小说的形式来阅读LinkedList的源码,绝了!
一.LinkedList 的剖白 大家好,我是 LinkedList,和 ArrayList 是同门师兄弟,但我俩练的内功却完全不同.师兄练的是动态数组,我练的是链表. 问大家一个问题,知道我为什么要 ...