(3)fastjson带有转义字符的数据格式处理
问题描述:
⽩天,前端同事跑过来说,你的接⼝返给前端的是⼀堆带斜杠转义字符的数据,数据格式未处理哦?然后,仔细⼀看果然,晃眼。。具体数据内容不再描述,⼤致格式如下:
"[{\"birthday\":\"2000\",\"major\":[\"挖掘机\",\"炒菜\"],\"name\":\"xiaoming\",\"comment\":\"hello world\",\"age\":25.2,\"status\":0}]";
这样的数据格式确实不便于前端接收处理,我们希望的是能够输出正常的json格式数据,⽹上百度了下。
解决⽅案:
【1】字符串⽅法:replace();
测试程序:
@Test
public void fun1(){
String data = "[{\"birthday\":\"2000\",\"major\":[\"挖掘机\",\"炒菜\"],\"name\":\"xiaoming\",\"comment\":\"hello world\",\"age\":25.2,\"status\":0}]";    String result = place("\"", "");
System.out.println(result);
}
测试结果:
[{birthday:2000,major:[挖掘机,炒菜],name:xiaoming,comment:hello world,age:25.2,status:0}]
【2】配置⼀个序列化类,fastjson数据处理
字符串转换配置类:
/**
* fastjson转义字符处理Utils
*/
public class StringToJsonSerizlizerConfig implements ObjectSerializer {
@Override
public void write(JSONSerializer jsonSerializer, Object o, Object o1, Type type, int i) throws IOException {
jsonSerializer.write(JSONObject.String()));
}
}
这个配置类,在我们测试程序中⾃定义⼀个序列化的局部变量,并通过JSONField注解赋给这个变量序列化属性。
@JSONField(serializeUsing = StringToJsonSerializer.class)
测试程序:
/**
* fastjson转义字符处理
* 注⼊⼯具类
*/
@JSONField(serializeUsing = StringToJsonSerializerUtils.class)
fastjson忽略属性private String jsonFromatTemplate;
/**
* fastjson转义字符处理:注⼊⼯具类⽅式
*/
@Test
public void fun2(){
String data = "[{\"birthday\":\"2000\",\"major\":[\"挖掘机\",\"炒菜\"],\"name\":\"xiaoming\",\"comment\":\"h
ello world\",\"age\":25.2,\"status\":0}]";    jsonFromatTemplate = result;
System.out.println("fastjson转义字符处理结果:" + jsonFromatTemplate);
}
测试结果:
[{"birthday":"2000","major":["挖掘机","炒菜"],"name":"xiaoming","comment":"hello world","age":25.2,"status":0}]
【3】JSONObject转换
当然,如果嫌第⼆种⿇烦,也可以直接这样转:
Object json = JSON(/*需要序列化的对象*/); //格式化转义字符\
String json = JSON(/*需要序列化的对象*/); //产⽣转义字符\
测试程序:
@Test
public void fun3(){
String data = "[{\"birthday\":\"2000\",\"major\":[\"挖掘机\",\"炒菜\"],\"name\":\"xiaoming\",\"comment\":\"hello world\",\"age\":25.2,\"status\":0}]";    Object o = JSON(data);
System.out.String());
}
测试结果:
[{"birthday":"2000","major":["挖掘机","炒菜"],"name":"xiaoming","comment":"hello world","age":25.2,"status":0}]
愿你就像早晨⼋九点钟的太阳,活⼒⼗⾜,永远年轻。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。