带有转义字符的字符串转为Json

这篇博客讨论了如何解析包含转义字符的JSON字符串。内容涉及到在Java中使用JsonParser将字符串转换为JSON对象,以及在解析过程中可能遇到的问题。示例展示了如何正确处理payload字段,将其从字符串转换为有效的JSON格式。
摘要由CSDN通过智能技术生成

带有转义字符的字符串转为Json

{"event":"dataChanged","eventTime":"2021-03-19 13:59:41","payload":"{\"dev_id\":\"330017BDA092\",\"dev_msg\":{\"DeviceType\":\"B204\",\"HardVer\":\"1.0.0.0\",\"SoftVer\":\"1.0.0.0\",\"SwitchAmount\":2,\"SerialPortAmount\":3},\"control_msg\":[{\"ControlId\":\"01\",\"ControlType\":\"Pulse electromagnetic valve\",\"ValueType\":0,\"ControlAmountLowBound \":0,\"ControlAmountBound\":1,\"ControlAmount\":0.0,\"unit\":\"\"}],\"sensor_msg\":[{\"SensorNo\":\"01\",\"SensorType\":\"CH4\",\"SensorState\":1,\"Value\":0.0,\"Unit\":\"%LEL\"},{\"SensorNo\":\"02\",\"SensorType\":\"Signal strength\",\"SensorState\":1,\"Value\":16.0,\"Unit\":\"\"},{\"SensorNo\":\"03\",\"SensorType\":\"Communication Module type\",\"SensorState\":1,\"Value\":1.0,\"Unit\":\"\"}]}","termId":77660,"deviceCode":"330017BDA092","deviceType":"0232","deviceIdentify":null}

分析payload时候解析不出是Json对象,是因为payload是一个字符串,反斜线是因为转义双引号’ " ';(直接将payload转为json会解析失败,当然你可以提前操作字符串转为你想要的格式)

Json 获取时候就获取为字符串在转为json,Json方法会自动帮我们转格式;

//谷歌的JSON工具只能转为相应的格式,例如sensor_msg是数组,不能强转为Sting
String payloadString = deviceData.get("payload").getAsString();
JsonObject payload = new JsonParser().parse(payloadString).getAsJsonObject();

转为之后就是这样

{"dev_id":"330017BDA092","dev_msg":{"DeviceType":"B204","HardVer":"1.0.0.0","SoftVer":"1.0.0.0","SwitchAmount":2,"SerialPortAmount":3},"control_msg":[{"ControlId":"01","ControlType":"Pulse electromagnetic valve","ValueType":0,"ControlAmountLowBound ":0,"ControlAmountBound":1,"ControlAmount":0.0,"unit":""}],"sensor_msg":[{"SensorNo":"01","SensorType":"CH4","SensorState":1,"Value":0.0,"Unit":"%LEL"},{"SensorNo":"02","SensorType":"Signal strength","SensorState":1,"Value":16.0,"Unit":""},{"SensorNo":"03","SensorType":"Communication Module type","SensorState":1,"Value":1.0,"Unit":""}]}

数据解析为Json格式

{
    "event":"dataChanged",
    "eventTime":"2021-03-19 13:59:41",
    "payload":{
        "dev_id":"330017BDA092",
        "dev_msg":{
            "DeviceType":"B204",
            "HardVer":"1.0.0.0",
            "SoftVer":"1.0.0.0",
            "SwitchAmount":2,
            "SerialPortAmount":3
        },
        "control_msg":[
            {
                "ControlId":"01",
                "ControlType":"Pulse electromagnetic valve",
                "ValueType":0,
                "ControlAmountLowBound ":0,
                "ControlAmountBound":1,
                "ControlAmount":0,
                "unit":""
            }
        ],
        "sensor_msg":[
            {
                "SensorNo":"01",
                "SensorType":"CH4",
                "SensorState":1,
                "Value":0,
                "Unit":"%LEL"
            },
            {
                "SensorNo":"02",
                "SensorType":"Signal strength",
                "SensorState":1,
                "Value":16,
                "Unit":""
            },
            {
                "SensorNo":"03",
                "SensorType":"Communication Module type",
                "SensorState":1,
                "Value":1,
                "Unit":""
            }
        ]
    },
    "termId":77660,
    "deviceCode":"330017BDA092",
    "deviceType":"0232",
    "deviceIdentify":null
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值