前言:在开发的时候遇到一个问题,一个xml格式的请求数据其中一个字段拼接的是json格式的数据,json数据里面的双引号导致xml格式错误,导致服务端解析错误。
错误请求代码
有经验的人看到这个请求应该就会发现错误的地方
SIMCardInfo="{"netWorkType":"0","phoneType":"1","dataState":"0","simState":"1","subScriberId":"null"}"
字段内部的双引号会引起xml解析错误,正常情况下xml根据双引号的位置只能解析SIMCardInfo="{",导致后面的数据没有正确的双引号标识解析错误
我们既要保证json内部数据正确,还要保证整个xml请求数据正确,所以特殊情况就要特殊对待
解决方法
1、如果内容中有单引号,就用双引号括起来,如果内容中有双引号,就用单引号括起来。
所以按照这种方法,上述请求可以转换为这样
2、使用转义字符替换
我们在代码编写的时候,经常需要拼接带有双引号字符串,我们也可以使用“\”转义
"{\"simOperator\":\"" + simOperator + "\",\"netWorkType\":\"" + netWorkType + "\",\"phoneType\":\"" + phoneType + "\",\"dataState\":\"" + dataState + "\",\"simState\":\"" + simState+ "\",\"subScriberId\":\"" + subScriberId + "\",\"networkCountryIso\":\"" + networkCountryIso + "\"}"