(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}]

願你就像早晨八九點鐘的太陽,活力十足,永遠年輕。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章