前言
一个json字符串带有转义字符串,一开始发现解析不了,后面发现gson可以解析并转换json对象
gson使用
定义一个对象
import lombok.Data;
@Data
public class LogicInfo {
public Integer logicNo;
public String logicSourceData;
}
json解析
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import java.util.Arrays;
import java.util.List;
public class JsonDemo {
public static void main(String[] args) {
String data = """
{"version":null,"id":"0ghstFMkItF","identifier":"logicManage","param":{"operatorType":2,"logicVersion":1747290863051,"data":"[{\"logicNo\":1,\"logicType\":5,\"logicStatus\":1,\"logicULC\":\"XqsAAACuAAQAABYAAAAAAAAAAGUAM6sHBAEAAQgAAAAAAAAAEwkAAAATAAAALwQAAABCAAAACAUAAABKAAAAAwYAAABNAAAAGJmhMKExoTKhM6E0oTWhNqE4oTncABKhMKExoTKhM6E0oTWhNqE3oTihOaIxMKIxMaIxMqIxM6IxNKIxNaIxNqIxN5EHAAoKBA4KkQMAkwEjAwIhAgMnRpECJ8OTASMAAiEAAyFF\",\"logicSourceData\":\"[{\\\"belongLogicPageNo\\\":0,\\\"hostNo\\\":0,\\\"logicCondition\\\":\\\"一开面板P27x0_上键等于单击\\\",\\\"logicCondition2\\\":\\\"\\\",\\\"logicName\\\":\\\"主机逻辑\\\",\\\"logicNo\\\":1,\\\"logicResult\\\":\\\"一开面板P27x0_左继电器等于断开\\\",\\\"logicStatus\\\":1,\\\"logicType\\\":5,\\\"ordinal\\\":-1}]\"}]"}}
""";
JsonObject jsonObject = JsonParser.parseString(data).getAsJsonObject();
JsonElement fieldValue = jsonObject.get("param");
System.out.println(fieldValue);
JsonObject asJsonObject = fieldValue.getAsJsonObject();
JsonElement fieldValue1 = asJsonObject.get("data");
String str = fieldValue1.getAsString();
LogicInfo[] array = new Gson().fromJson(str, LogicInfo[].class);
List<LogicInfo> list = Arrays.asList(array);
System.out.println(list.get(0).logicNo);
}
}
输出结果为
总结
遇到带有转义字符串的json,可以利用GSON进行json解析