在Java中,處理JSON數(shù)據(jù)通常是必須的。然而,很多時候我們可能會遇到亂碼問題。這篇文章將介紹如何接收JSON中文時避免亂碼。
// 假設(shè)從API中獲取到的JSON數(shù)據(jù)為: String jsonString = "{\"name\": \"張三\", \"age\": 20}"; // 建立一個解析JSON的對象 JSONObject jsonObject = new JSONObject(jsonString); // 獲取名字 String name = jsonObject.getString("name"); // 獲取年齡 int age = jsonObject.getInt("age");
然而,上述代碼在接收到含有中文的JSON數(shù)據(jù)時,可能會遇到亂碼問題。這是因為JSON中的中文數(shù)據(jù)使用的是UTF-8編碼,而Java則默認使用的是ISO-8859-1編碼。因此,我們需要對傳入的JSON數(shù)據(jù)進行編碼轉(zhuǎn)換。
// 假設(shè)從API中獲取到的JSON數(shù)據(jù)為: String jsonString = "{\"name\": \"張三\", \"age\": 20}"; // 進行編碼轉(zhuǎn)換 jsonString = new String(jsonString.getBytes("ISO-8859-1"), "UTF-8"); // 建立一個解析JSON的對象 JSONObject jsonObject = new JSONObject(jsonString); // 獲取名字 String name = jsonObject.getString("name"); // 獲取年齡 int age = jsonObject.getInt("age");
在上述代碼中,我們利用了Java中String類可以使用getBytes方法將ISO-8859-1編碼的字符串轉(zhuǎn)換為字節(jié)數(shù)組。然后我們再使用String的構(gòu)造函數(shù)將字節(jié)數(shù)組轉(zhuǎn)換為UTF-8編碼的String對象。這樣我們就成功地避免了從JSON中獲取中文數(shù)據(jù)時可能遇到的亂碼問題。