(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 = data.replace("\"", "");
    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.parseObject(o.toString()));
    }
}

 这个配置类,在我们测试程序中自定义一个序列化的局部变量,并通过JSONField注解赋给这个变量序列化属性。

@JSONField(serializeUsing = StringToJsonSerializer.class)

测试程序:

@Test
public void fun2(){
    String data = "[{\"birthday\":\"2000\",\"major\":[\"挖掘机\",\"炒菜\"],\"name\":\"xiaoming\",\"comment\":\"hello world\",\"age\":25.2,\"status\":0}]";
    jsonFromatTemplate = data;
    System.out.println(jsonFromatTemplate);
}

测试结果:

[{"birthday":"2000","major":["挖掘机","炒菜"],"name":"xiaoming","comment":"hello world","age":25.2,"status":0}]

【3】JSONObject转换

当然,如果嫌第二种麻烦,也可以直接这样转:

Object json = JSONObject.toJSON(/*需要序列化的对象*/); //格式化转义字符\
String json = JSONObject.toJSON(/*需要序列化的对象*/); //产生转义字符\

测试程序: 

@Test
public void fun3(){
    String data = "[{\"birthday\":\"2000\",\"major\":[\"挖掘机\",\"炒菜\"],\"name\":\"xiaoming\",\"comment\":\"hello world\",\"age\":25.2,\"status\":0}]";
    Object o = JSONObject.toJSON(data);
    System.out.println(o.toString());
}

测试结果:

[{"birthday":"2000","major":["挖掘机","炒菜"],"name":"xiaoming","comment":"hello world","age":25.2,"status":0}]

愿你就像早晨八九点钟的太阳,活力十足,永远年轻。

发布了93 篇原创文章 · 获赞 136 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/qq_27706119/article/details/104828285
今日推荐