如何在Java中将指定JSON数组解析为字符串或数组并提取值?
嘿,我来帮你解决这个JSON数组解析的问题!你手里的是一个标准的JSON字符串数组,在Java里有好几种简单靠谱的方式把它解析成字符串集合或者数组,下面给你详细说说常用的几种方案:
方法一:用Jackson库(Spring项目常用)
Jackson是Java生态里非常流行的JSON处理库,很多Spring项目默认就集成了它,用法也很灵活。
如果是Maven项目,先在pom.xml里添加依赖:
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.15.2</version> <!-- 建议使用最新稳定版 --> </dependency>
然后编写解析代码:
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import java.util.List; public class JsonParser { public static void main(String[] args) { String jsonArrayStr = "[ \"black-chest-close.png\", \"diamond-chest-close.png\", \"gold-chest-close.png\", \"logo.png\", \"logo1.png\", \"ruby-chest-close.png\", \"sapphire-chest-close.png\" ]"; ObjectMapper objectMapper = new ObjectMapper(); try { // 解析成List<String> List<String> imageList = objectMapper.readValue(jsonArrayStr, new TypeReference<List<String>>() {}); System.out.println("解析后的List:" + imageList); // 或者直接解析成String数组 String[] imageArray = objectMapper.readValue(jsonArrayStr, String[].class); System.out.println("解析后的数组:" + java.util.Arrays.toString(imageArray)); } catch (Exception e) { e.printStackTrace(); } } }
方法二:用Gson库(Google出品,轻量易用)
Gson是Google开发的JSON处理库,API设计简洁直观,上手成本很低。
Maven依赖配置:
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.10.1</version> <!-- 建议使用最新稳定版 --> </dependency>
解析代码示例:
import com.google.gson.Gson; import java.util.List; public class GsonParser { public static void main(String[] args) { String jsonArrayStr = "[ \"black-chest-close.png\", \"diamond-chest-close.png\", \"gold-chest-close.png\", \"logo.png\", \"logo1.png\", \"ruby-chest-close.png\", \"sapphire-chest-close.png\" ]"; Gson gson = new Gson(); // 解析成String数组 String[] imageArray = gson.fromJson(jsonArrayStr, String[].class); System.out.println("解析后的数组:" + java.util.Arrays.toString(imageArray)); // 解析成List<String> List<String> imageList = gson.fromJson(jsonArrayStr, new com.google.gson.reflect.TypeToken<List<String>>() {}.getType()); System.out.println("解析后的List:" + imageList); } }
方法三:用org.json库(轻量级原生风格)
如果你不想引入太重量级的库,org.json是个不错的选择,它的API更偏向于手动遍历JSON结构,适合简单场景。
Maven依赖配置:
<dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20230618</version> <!-- 建议使用最新稳定版 --> </dependency>
解析代码示例:
import org.json.JSONArray; import java.util.ArrayList; import java.util.List; public class OrgJsonParser { public static void main(String[] args) { String jsonArrayStr = "[ \"black-chest-close.png\", \"diamond-chest-close.png\", \"gold-chest-close.png\", \"logo.png\", \"logo1.png\", \"ruby-chest-close.png\", \"sapphire-chest-close.png\" ]"; try { JSONArray jsonArray = new JSONArray(jsonArrayStr); List<String> imageList = new ArrayList<>(); String[] imageArray = new String[jsonArray.length()]; // 遍历JSON数组,逐个提取字符串元素 for (int i = 0; i < jsonArray.length(); i++) { String imageName = jsonArray.getString(i); imageList.add(imageName); imageArray[i] = imageName; } System.out.println("解析后的List:" + imageList); System.out.println("解析后的数组:" + java.util.Arrays.toString(imageArray)); } catch (Exception e) { e.printStackTrace(); } } }
内容的提问来源于stack exchange,提问作者Сергей Переходов
相关产品推荐
相关产品推荐

