共计 1370 个字符,预计需要花费 4 分钟才能阅读完成。
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”)
原文地址: JSONObject 使用对比 hutool、alibaba