获取JSON数组对象是Java中常见的操作,通常在与API交互、解析数据等场景中经常需要使用。下面是步骤:
步骤
- 引入相关依赖
首先需要引入相关的依赖,包括JSON解析库和HTTP库,通常使用的是Jackson
库和HttpClient
库。
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.1</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.12</version>
</dependency>
</dependencies>
- 获取JSON数据
使用HttpClient库访问API接口,获取JSON数据,通常在获取JSON数组对象之前需要获取JSON对象。
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import java.io.IOException;
// 获取JSON数据
CloseableHttpClient client = HttpClients.createDefault();
HttpGet httpGet = new HttpGet("http://myapi.com/data.json");
CloseableHttpResponse response = client.execute(httpGet);
String jsonString = EntityUtils.toString(response.getEntity());
- 解析JSON数据
使用Jackson库解析JSON数据,将JSON字符串转换成Java对象,通常将JSON数据解析成Java的List集合对象,然后遍历List集合获取JSON数组对象。
// 解析JSON数据
ObjectMapper mapper = new ObjectMapper();
List<MyData> dataList = mapper.readValue(jsonString, new TypeReference<List<MyData>>() {});
// 获取数组对象
MyData d1 = dataList.get(0);
List<MyDataItem> itemList = d1.getItems();
- 获取JSON数组对象
最后可以通过遍历List集合,获取JSON数组对象。
// 遍历获取数组对象
for (MyDataItem item : itemList) {
//do something with item object
}
除此之外,也可以使用JsonPath、Gson等库获取JSON数组对象。
示例
下面是两条示例说明:
示例一:从本地文件获取JSON数组对象
// 加载JSON数据
String jsonData = FileUtils.readFileToString(new File("data.json"), "UTF-8");
// 解析JSON数据
ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.readTree(jsonData);
// 获取数组对象
JsonNode arrayNode = rootNode.path("items");
if (arrayNode.isArray()) {
for (JsonNode itemNode : arrayNode) {
//do something with itemNode object
}
}
示例二:从API接口获取JSON数组对象
// 获取JSON数据
CloseableHttpClient client = HttpClients.createDefault();
HttpGet httpGet = new HttpGet("http://myapi.com/data.json");
CloseableHttpResponse response = client.execute(httpGet);
String jsonString = EntityUtils.toString(response.getEntity());
// 解析JSON数据
ObjectMapper mapper = new ObjectMapper();
List<MyData> dataList = mapper.readValue(jsonString, new TypeReference<List<MyData>>() {});
// 获取数组对象
MyData d1 = dataList.get(0);
List<MyDataItem> itemList = d1.getItems();
// 遍历获取数组对象
for (MyDataItem item : itemList) {
//do something with item object
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java获取json数组对象的实例讲解 - Python技术站