1.pom配置
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20190722</version>
</dependency>
2.解析步骤
(1)解析的json数据
{
"batteryAlarm": 0,
"carMode": 1,
"minVoltageBattery": 3.89,
"chargeStatus": 1,
"vin": "LS5A3CJC0JF890971",
"nevChargeSystemTemperatureDtoList": [{
"probeTemperatures": [25, 23, 24, 21, 24, 21, 23, 21, 23, 21, 24, 21, 24, 21, 25, 21],
"chargeTemperatureProbeNum": 16,
"childSystemNum ": 1
}]
}
(2)解析思路
实现步骤:
①:创建json字符串;
②:创建java类;
③:使用org.json解析json字符串;
④:将json的字符串解析后为key:value,赋值给javaBean;
⑤:打印测试.
3.代码实现
3.1 Java Bean的实体类
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @Author Lzy
* @Date 2023-05-28 23:46
* @Version 1.0
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class jsonEntity {
private int batteryAlarm;
private int carMode;
private Double minVoltageBattery;
private int chargeStatus;
private String vin;
private List<Integer> probeTemperatures;
private int chargeTemperatureProbeNum;
private int childSystemNum;
}
3.2 解析JSON代码
/**
* @Author Lzy
* @Date 2023-05-28 23:46
* @Version 1.0
*/
import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import java.util.*;
/**
{
"batteryAlarm": 0,
"carMode": 1,
"minVoltageBattery": 3.89,
"chargeStatus": 1,
"vin": "LS5A3CJC0JF890971",
"nevChargeSystemTemperatureDtoList": [{
"probeTemperatures": [25, 23, 24, 21, 24, 21, 23, 21, 23, 21, 24, 21, 24, 21, 25, 21],
"chargeTemperatureProbeNum": 16,
"childSystemNum ": 1
}]
}
*/
public class complexJson {
public static void main(String[] args) {
/**
* 实现步骤:
* ①:创建json字符串
* ②:创建java类
* ③:使用org。json解析json字符串
* ④:将json的字符串解析后为key:value,赋值给javaBean
* ⑤:打印测试
*
*/
// todo ①:创建json字符串
String jsonStr = "{\"" +
"batteryAlarm\": 0,\"" +
"carMode\": 1,\"" +
"minVoltageBattery\": 3.89,\"" +
"chargeStatus\": 1,\"" +
"vin\": \"LS5A3CJC0JF890971\",\"" +
"nevChargeSystemTemperatureDtoList\":[" +
"{\"probeTemperatures\": [25, 23, 24, 21, 24, 21, 23, 21, 23, 21, 24, 21, 24, 21, 25, 21],\"" +
"chargeTemperatureProbeNum\": 16," +
"\"childSystemNum\": 1}" +
"]" +
"}";
// todo ②:创建java类
jsonEntity jsonEntity=null;
// todo ③:使用org。json解析json字符串
JSONObject jsonObject = new JSONObject(jsonStr);
// todo ④:将json的字符串解析后为key:value,赋值给javaBean
HashMap<String, Object> stringObjectHashMap = jsonToHashMap(jsonObject);
int batteryAlarm =Integer.parseInt(stringObjectHashMap.getOrDefault("batteryAlarm", -999999).toString());
int carMode =Integer.parseInt(stringObjectHashMap.getOrDefault("carMode", -999999).toString());
double minVoltageBattery =Double.parseDouble(stringObjectHashMap.getOrDefault("minVoltageBattery",-999999D).toString());
int chargeStatus =Integer.parseInt(stringObjectHashMap.getOrDefault("chargeStatus", -999999).toString());
String vin =stringObjectHashMap.getOrDefault("vin", -999999).toString();
final String nevChargeSystemTemperatureDtoListStr = stringObjectHashMap.getOrDefault("nevChargeSystemTemperatureDtoList", null).toString();
final List<HashMap<String, Object>> nevChargeSystemTemperatureDtoList = jsonToList(nevChargeSystemTemperatureDtoListStr);
final HashMap<String, Object> firstHashMap = nevChargeSystemTemperatureDtoList.get(0);
int chargeTemperatureProbeNum = Integer.parseInt(firstHashMap.getOrDefault("chargeTemperatureProbeNum", -999999).toString());
int childSystemNum = Integer.parseInt(firstHashMap.getOrDefault("childSystemNum", -999999).toString());
ArrayList<Integer> probeTemperatures = new ArrayList<>();
final String temperatures =firstHashMap.getOrDefault("probeTemperatures", -999999).toString();
//不为空时执行
if(StringUtils.isNotEmpty(temperatures)){
// [25, 23, 24, 21, 24, 21, 23, 21, 23, 21, 24, 21, 24, 21, 25, 21]
final JSONArray jsonArray = new JSONArray(temperatures);
for (Object obj : jsonArray) {
probeTemperatures.add(Integer.parseInt(obj.toString()));
}
}
// todo ⑤:打印测试
jsonEntity = new jsonEntity(
batteryAlarm,
carMode,
minVoltageBattery,
chargeStatus,
vin,
probeTemperatures,
chargeTemperatureProbeNum,
childSystemNum
);
System.out.println(jsonEntity);
}
/**
* 将json字符串转换成集合对象
* @param jsonStr
* @return
*/
private static List<HashMap<String,Object>> jsonToList(String jsonStr) {
//定义返回的集合对象
List<HashMap<String,Object>> list = new ArrayList<>();
//将json字符串转换成jsonArray
JSONArray jsonArray = new JSONArray(jsonStr);
//遍历集合中的每一个元素
for (Object obj : jsonArray) {
final String objStr = obj.toString();
final JSONObject jsonObject=new JSONObject(objStr);
list.add(jsonToHashMap(jsonObject));
}
//返回解析后的list集合
return list;
}
/**
* 将jsonObject对象转换成hashMap(将kv键值对的json解析后写入到map中)
* @param jsonObject
* @return
*/
private static HashMap<String,Object> jsonToHashMap(JSONObject jsonObject) {
//定义需要返回的hashMap对象
HashMap<String,Object> kv = new HashMap<>();
//获取到jsonObject对象的所有key
/**
* kv.put(1, "Google");
* kv.put(2, "Runoob");
* kv.put(3, "Taobao");
* ||
* ||输出结果
* keySet: [1, 2, 3]
*/
final Set<String> keySet = jsonObject.keySet();
//遍历集合,将每一个key对应的value查询出来写入到hashMap对象
for (String key : keySet) {
kv.put(key,jsonObject.get(key));
}
//返回hashMap对象、
return kv;
}
}