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

java json傳輸亂碼

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

Java中使用json傳輸數據時,有時會遇到亂碼的問題。這個問題通常是由于數據編碼格式和接收方編碼格式不一致導致的。

在傳輸數據時,通常需要借助于第三方庫,例如Gson或者FastJson。這些庫在序列化Java對象為json字符串時,通常會使用UTF-8編碼格式。而接收方在解析json字符串時,如果沒有指定編碼格式,則默認使用ISO-8859-1編碼格式。

//使用Gson序列化Java對象為json字符串
Gson gson = new Gson();
String json = gson.toJson(obj);
//使用FastJson序列化Java對象為json字符串
String json = JSON.toJSONString(obj);

解決亂碼問題的方法有兩種:

1. 接收方指定編碼格式

//使用Gson解析json字符串
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
String json = ...
MyClass obj = gson.fromJson(new InputStreamReader(new ByteArrayInputStream(json.getBytes("UTF-8")), "UTF-8"), MyClass.class);
//使用FastJson解析json字符串
String json = ...
MyClass obj = JSON.parseObject(json, MyClass.class, Feature.IgnoreNotMatch, Feature.AllowComment, Feature.AutoCloseSource, Feature.UseBigDecimal);

2. 在序列化和解析時都使用同一個編碼格式

//使用Gson序列化Java對象為json字符串
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
String json = ...
byte[] data = json.getBytes("UTF-8");
//使用Gson解析json字符串
MyClass obj = gson.fromJson(new InputStreamReader(new ByteArrayInputStream(data), "UTF-8"), MyClass.class);
//使用FastJson序列化Java對象為json字符串
String json = ...
byte[] data = json.getBytes("UTF-8");
//使用FastJson解析json字符串
MyClass obj = JSON.parseObject(new String(data, "UTF-8"), MyClass.class, Feature.IgnoreNotMatch, Feature.AllowComment, Feature.AutoCloseSource, Feature.UseBigDecimal);

總之,無論使用哪種方法解決亂碼問題,都需要保證序列化和解析時使用的編碼格式一致,否則會導致傳輸數據出現問題。