我想把map转为json存在mysql的一个字段中数据类型为json
表如下
CREATE TABLE tb ( id BIGINT NOT NULL PRIMARY KEY auto_increment, info json );
这个info就是json数据格式
map转换json我们使用fastjson
maven依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.57</version>
</dependency>
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<>();
map.put(0, "1");
map.put(1, "");
map.put(2, "0");
map.put(3, "0");
map.put(4, "100");
map.put(5, "30");
//map转json字符串
String mapJson = JSON.toJSONString(map);
System.out.println(mapJson);
//然后插入数据库
....
报错:
Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Invalid JSON text: “Missing a name for object member.” at position 1 in value for column ‘tb.info‘.
原因:
json格式有问题
mapJson
{0:”1″,1:””,2:”0″,3:”0″,4:”100″,5:”30″}
map转json,map的key都得是String
把Map<Integer, String> map = new HashMap<>();
改成
Map<String, String> map = new HashMap<>();
即可
mapJson
{“0″:”1″,”1″:””,”2″:”0″,”3″:”0″,”4″:”100″,”5″:”30″}
不再报错,成功插入数据库!
还有一点值得一提的是
将map对象转换为json时,如果key的value值是null,将不会将其加入json字符串
/**
* test null for map
*
* @author wmx
* @date 2019-08-15
*/
public class Test1 {
public static void main(String[] args) {
Map<String, String> map = new HashMap<>();
map.put("0", "1");
map.put("1", "");
map.put("2", null);
map.put("3", "0");
map.put("4", "100");
map.put("5", null);
//map转json字符串
String mapJson = JSON.toJSONString(map);
System.out.println(mapJson);
}
}
输出: {“0″:”1″,”1″:””,”3″:”0″,”4″:”100″}
我们发现key为2,5的由于value为null,在转为json后不显示
感觉json数据格式和fastjson挺有意思的,后续好好学习一下
转载请注明:汪明鑫的个人博客 » Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Invalid JSON text…
说点什么
您将是第一位评论人!