Gson解析带转义字符串json

92 阅读1分钟

前言

一个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);
    }
}

输出结果为

image.png

总结

遇到带有转义字符串的json,可以利用GSON进行json解析