A JSONObject text must begin with ‘{‘ at 1 [character 2 line 1]
出现这个异常的原因是json串格式不正常,没有"{"开始或没有"}"结尾
json文件头里带有编码字符(如UTF-8等),读取字符串时json串是正常的,但是解析就有异常。
JSONObject
第一种 cn.hutool.json.JSONObject;
第二种 com.alibaba.fastjson.JSONObject;
在使用JSON序列化工具的时候,尽量不要混合使用,即使存在多个JSON工具,也不把一个JSON工具的JSON对象直接用另一个JSON工具来处理,因为每个JSON工具都有自己的对JSON的处理,包括一些优化。
第一种 cn.hutool.json.JSONObject:
String jsonStr = "{\"b\":\"value2\",\"c\":\"value3\",\"a\":\"value1\"}";
//JSON字符串转换成JSON对象 方法一:使用工具类转换
JSONObject jsonObject = JSONUtil.parseObj(jsonStr);
// JSON字符串转换成JSON对象 方法二:new的方式转换
JSONObject jsonObject2 = new JSONObject(jsonStr);
//获取json里的某个值
String mouziduan = jsonObject.getStr("mouziduan")
//JSON对象转字符串(一行)
String jsonString = jsonObject.toString();
//JSON对象转换成Java对象
User user = JSONUtil.toBean(jsonString, User.class);
// Java对象转为JSON对象 false表示不跳过空值
JSONObject json = JSONUtil.parseObj(User, false);
// Java对象转为JSON对象 第二个参数表示保持有序
JSONObject json = JSONUtil.parseObj(User, false, true);
第二种 com.alibaba.fastjson.JSONObject:
//Java对象转换成JSON字符串
String userString = JSONObject.toJSONString(user );
//JSON对象转换为JSON字符串
String jsonString = jsonObject.toJSONString();
//Java对象先转成JSON对象
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(user );
//JSON对象转换成Java对象
User user = JSONObject.toJavaObject(jsonObject, User.class);
//JSON字符串转换成JSON对象
JSONObject jsonObject1 = JSONObject.parseObject(userString );
//获取json里的某个值
String mouziduan = jsonObject1.getString("mouziduan")