色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

cxf json轉(zhuǎn)對象 亂碼

謝彥文1年前9瀏覽0評論

最近在使用cxf做項目開發(fā),遇到了一個問題,就是在使用json作為參數(shù)向服務(wù)端發(fā)送請求時,如果請求中包含中文字符,轉(zhuǎn)換后得到的對象中會出現(xiàn)亂碼。這讓我非常困惑,于是決定認(rèn)真研究一下這個問題。

經(jīng)過分析,我發(fā)現(xiàn)問題出現(xiàn)在cxf默認(rèn)使用jettison進(jìn)行json的轉(zhuǎn)換。而jettison對于中文字符會采用unicode編碼方式,這就導(dǎo)致了中文字符在轉(zhuǎn)換后出現(xiàn)的亂碼。下面是一個代碼示例:

public class Person {
private String name;
private int age;
//getter、setter方法
}
@POST
@Path("/savePerson")
@Consumes(MediaType.APPLICATION_JSON)
public void savePerson(Person person) {
System.out.println(person.getName());
//一些保存操作
}

我們使用Postman工具將json參數(shù)作為請求體發(fā)送:

{
"name": "張三",
"age": 20
}

在調(diào)用savePerson方法時,輸出的person對象中name屬性值出現(xiàn)了亂碼。這是因為jettison默認(rèn)采用"strict-json"模式,即所有字符串進(jìn)行unicode編碼,所以一些特殊字符就無法正確顯示了。

解決這個問題的方法很簡單,就是在cxf服務(wù)設(shè)置中更換json提供者。比如我們可以使用JacksonJsonProvider:

jaxrs:providersjaxrs:providers

使用JacksonJsonProvider可以很好地解決中文亂碼的問題,并且還提供了更多的自定義配置。這個問題就這樣解決了,希望能對大家有所幫助。