一、Java字符串转JSON
1、使用JSONObject进行转换
在Java中,我们可以使用JSONObject将字符串转换为JSON对象。下面是文本字符串转换为JSON对象的示例代码:
String jsonString = "{\"name\":\"Alice\",\"age\":25}"; JSONObject json = new JSONObject(jsonString);
使用上述代码,我们可以将jsonString转换为一个JSON对象json。这个JSON对象包含两个属性:name和age,对应的值是"Alice"和25。
2、使用Gson进行转换
Gson是一个开源库,可以帮助Java程序将Java对象与JSON数据相互转换。下面是使用Gson将Java字符串转换为JSON对象的示例代码:
String jsonString = "{\"name\":\"Bob\",\"age\":30}"; Gson gson = new Gson(); JsonElement element = gson.fromJson(jsonString, JsonElement.class); JsonObject json = element.getAsJsonObject();
上述代码中,我们首先使用Gson对象将jsonString转换为一个JsonElement对象。然后,我们将JsonElement对象转换为一个JsonObject对象,该对象包含两个属性:name和age,对应的值是"Bob"和30。
二、JSON转字符串
1、使用JSONObject进行转换
使用JSONObject将一个JSON对象转换为字符串也非常简单。下面是示例代码:
JSONObject json = new JSONObject(); json.put("name", "Charlie"); json.put("age", 35); String jsonString = json.toString();
上述代码中,我们首先创建了一个JSON对象json,设置了两个属性:name和age。然后,我们使用json对象的toString方法,将json对象转换为一个字符串。
2、使用Gson进行转换
和将字符串转换为JSON对象一样,使用Gson将JSON对象转换为字符串也非常简单。下面是示例代码:
JsonObject json = new JsonObject(); json.addProperty("name", "David"); json.addProperty("age", 40); Gson gson = new Gson(); String jsonString = gson.toJson(json);
上述代码中,我们首先创建了一个JsonObject对象json,设置了两个属性:name和age。然后,我们使用Gson对象gson的toJson方法,将json对象转换为一个字符串。
三、JSON格式化输出
1、使用JSONObject进行格式化输出
使用JSONObject进行格式化输出也非常简单。下面是示例代码:
JSONObject json = new JSONObject(); json.put("name", "Eric"); json.put("age", 45); String jsonString = json.toString(4);
上述代码中,我们将JSONObject的toString方法的参数设置为4,表示将输出的字符串按照4个空格缩进。这样,输出的字符串看起来更加工整。
2、使用Gson进行格式化输出
和使用JSONObject一样,使用Gson进行格式化输出也非常简单。下面是示例代码:
JsonObject json = new JsonObject(); json.addProperty("name", "Frank"); json.addProperty("age", 50); Gson gson = new GsonBuilder().setPrettyPrinting().create(); String jsonString = gson.toJson(json);
上述代码中,我们使用GsonBuilder创建一个Gson对象gson,并设置其prettyPrinting属性为true,表示将输出的字符串进行格式化缩进。
四、JSON字符串转义问题
1、使用org.apache.commons.text.StringEscapeUtils进行转义
在Java中,有些字符在字符串中需要进行转义,否则会引起语法错误。在JSON字符串中,双引号、单引号、反斜杠等字符需要进行转义。这时,我们可以使用org.apache.commons.text.StringEscapeUtils类中的escapeJson方法进行转义。下面是示例代码:
String jsonString = "{\"name\":\"George\",\"desc\":\"He said, \\\"I am fine.\\\"\"}"; String escapedString = StringEscapeUtils.escapeJson(jsonString);
上述代码中,我们将一个包含转义字符的JSON字符串jsonString作为输入,调用escapeJson方法进行转义,得到输出字符串escapedString。
2、使用org.json库进行转义
除了使用org.apache.commons.text.StringEscapeUtils类,我们还可以使用org.json库中的JSONObject.quote方法进行转义。下面是示例代码:
String jsonString = "{\"name\":\"Henry\",\"desc\":\"He said, \\\"I am ok.\\\"\"}"; String escapedString = JSONObject.quote(jsonString);
上述代码中,我们将一个包含转义字符的JSON字符串jsonString作为输入,调用JSONObject.quote方法进行转义,得到输出字符串escapedString。