Java中使用JSON进行数据传输和解析已经非常常见。然而,有些开发者在处理JSON时可能会遇到编码问题。这个问题的解决方法是在JSON设置合适的编码,以保证数据正确传输和解析。
import java.nio.charset.StandardCharsets; import com.alibaba.fastjson.JSON; public class JsonTest { public static void main(String[] args) { String jsonStr = "{"name":"张三","age":18}"; byte[] jsonBytes = jsonStr.getBytes(StandardCharsets.UTF_8); String encodeJsonStr = new String(jsonBytes, StandardCharsets.ISO_8859_1); System.out.println("使用UTF-8编码的JSON数据:" + jsonStr); System.out.println("使用ISO-8859-1编码的JSON数据:" + encodeJsonStr); String decodeJsonStr = new String(encodeJsonStr.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); System.out.println("从ISO-8859-1转码为UTF-8的JSON数据:" + decodeJsonStr); // 使用FastJSON解析JSON JSONObject jsonObject = JSON.parseObject(jsonStr); System.out.println("解析JSON数据得到的Java对象:" + jsonObject.toString()); } }
上述代码中的JSON字符串使用UTF-8编码。 为了确保数据正确,程序首先将原始字符串按照UTF-8编码转为字节数组。然后,将字节数组使用ISO-8859-1编码,得到一个新的字符串。最后,程序又将新字符串使用UTF-8编码,得到了可以正确传输和解析的JSON数据。
此外,在使用FastJSON解析JSON时,我们可以使用JSON.parseObject()方法将JSON字符串直接转为Java对象。这个方法内部会将字符串转为字节数组,使用默认编码进行转码,并最终得到正确的JSON对象。