Fastjson是一個高效的Java JSON處理框架,但在對象轉JSON時有可能出現中文亂碼問題。
出現這種問題的原因可能是因為編碼不一致,比如Java對象采用UTF-8編碼,而Fastjson默認采用的是ISO-8859-1編碼。要解決這個問題,需要在轉換時注意編碼,可以通過設置SerializerFeature來實現。
User user = new User(); user.setId(1); user.setName("張三"); String jsonString = JSON.toJSONString(user, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty, SerializerFeature.WriteNullListAsEmpty, SerializerFeature.WriteNullNumberAsZero, SerializerFeature.WriteNullBooleanAsFalse, SerializerFeature.WriteDateUseDateFormat, SerializerFeature.WriteEnumUsingToString, SerializerFeature.WriteSlashAsSpecial); System.out.println(jsonString);
可以看到,這里的代碼中設置了多個SerializerFeature,其中WriteDateUseDateFormat用于序列化日期格式,WriteEnumUsingToString用于將枚舉類型的值序列化為字符串,WriteSlashAsSpecial用于將斜杠轉義為\/,保證序列化后的JSON格式正確。
除此之外,還有其他的解決方法,比如手動指定JSON的編碼格式,使用StringEscapeUtils對中文進行轉義等等。但無論采用哪種方法,都要注意編碼的統一性,才能避免中文亂碼的問題。