
本教程详细介绍了如何在java/android环境中解析json数组(jsonarray),并根据特定键值(如电子邮件地址)筛选和提取所需数据,特别是经纬度信息。文章涵盖了json结构分析、迭代处理、数据提取、字符串清洗以及错误处理等关键步骤,旨在帮助开发者高效处理动态json数据。
在现代应用程序开发中,JSON(JavaScript Object Notation)已成为数据交换的标准格式。JSONArray代表一个有序的JSON值集合,通常包含多个JSONObject,每个JSONObject又是由键值对组成的无序集合。
以下是本文将处理的JSON数据示例,它是一个包含多个地理位置(lati和longt)及相关信息(如email)的数组:
[
{
"num": "34304",
"email": "<a class="__cf_email__" data-cfemail="2f4e4e4e4e6f424e4643014e4b4b5d4a5c5c" href="/cdn-cgi/l/email-protection">[email protected]</a>",
"lati": "8888888",
"longt": "88888888",
"time": "2022-12-08 21:15:39"
},
{
"num": "34303",
"email": "<a class="__cf_email__" data-cfemail="2c4d4d4d4d6c414d4540024d48485e495f5f" href="/cdn-cgi/l/email-protection">[email protected]</a>",
"lati": "8888",
"longt": "88888",
"time": "8888888"
}
// ... 更多类似对象
]请注意,email字段的值是一个HTML字符串,其中包含一个<a>标签,包裹着实际的电子邮件地址。在解析和筛选时,我们需要对这个HTML字符串进行处理以提取纯文本的电子邮件地址。
解析JSONArray的基本步骤包括:将JSON字符串转换为JSONArray对象,然后遍历该数组,对每个JSONObject提取所需的数据。
立即学习“Java免费学习笔记(深入)”;
首先,你需要将接收到的JSON字符串转换为org.json.JSONArray对象。
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
// 在Android项目中,你可能需要导入 android.text.Html
// import android.text.Html;
public class JsonDataProcessor {
public static void processJsonData(String jsonString, String targetEmail) {
List<String> filteredLatLongs = new ArrayList<>();
try {
JSONArray jsonArray = new JSONArray(jsonString);
// 遍历JSONArray
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
// 提取email字段,并进行HTML解码
String rawEmail = jsonObject.optString("email", "");
String cleanedEmail;
// 在Android环境中,使用Html.fromHtml进行解码
// cleanedEmail = Html.fromHtml(rawEmail).toString();
// 对于纯Java环境或简化示例,我们可以假设已经处理或直接使用
// 这里为了演示,我们手动从HTML字符串中提取可见的邮箱文本
if (rawEmail.contains("[email")) {
int startIndex = rawEmail.indexOf(">");
int endIndex = rawEmail.indexOf("</a>");
if (startIndex != -1 && endIndex != -1 && startIndex < endIndex) {
cleanedEmail = rawEmail.substring(startIndex + 1, endIndex);
} else {
cleanedEmail = rawEmail; // 如果格式不符,则使用原始字符串
}
} else {
cleanedEmail = rawEmail; // 如果不是HTML格式,直接使用
}
// 根据电子邮件地址进行筛选
if (targetEmail.equals(cleanedEmail)) {
String lati = jsonObject.getString("lati");
String longt = jsonObject.getString("longt");
filteredLatLongs.add("Lati: " + lati + ", Longt: " + longt);
}
}
// 输出筛选结果
System.out.println("针对邮箱 " + targetEmail + " 的筛选结果:");
if (filteredLatLongs.isEmpty()) {
System.out.println("未找到匹配的条目。");
} else {
for (String latLong : filteredLatLongs) {
System.out.println(latLong);
}
}
} catch (JSONException e) {
System.err.println("解析JSON时发生错误: " + e.getMessage());
} catch (NumberFormatException e) {
System.err.println("将经纬度字符串转换为数字时发生错误: " + e.getMessage());
}
}
public static void main(String[] args) {
String sampleJson = "[{"num": "34304","email": "<a class=\"__cf_email__\" data-cfemail=\"2f4e4e4e4e6f424e4643014e4b4b5d4a5c5c\" href=\"/cdn-cgi/l/email-protection\">[email protected]</a>","lati": "8888888","longt": "88888888","time": "2022-12-08 21:15:39"},{"num": "34303","email": "<a class=\"__cf_email__\" data-cfemail=\"2c4d4d4d4d6c414d4540024d48485e495f5f\" href=\"/cdn-cgi/l/email-protection\">[email protected]</a>","lati": "8888","longt": "88888","time": "8888888"},{"num": "34302","email": "<a class=\"__cf_email__\" data-cfemail=\"3c5e5e5e5e7c515d5550125d58584e594f4f\" href=\"/cdn-cgi/l/email-protection\">[email protected]</a>","lati": "8888","longt": "88888","time": "8888888"},{"num": "34301","email": "<a class=\"__cf_email__\" data-cfemail=\"7716161616371a161e1b5916131305120404\" href=\"/cdn-cgi/l/email-protection\">[email protected]</a>","lati": "8888","longt": "88888","time": "8888888"},{"num": "34300","email": "<a class=\"__cf_email__\" data-cfemail=\"1f7c7c7c7c5f727e7673317e7b7b6d7a6c6c\" href=\"/cdn-cgi/l/email-protection\">[email protected]</a>","lati": "8888","longt": "88888","time": "8888888"}]";
String targetEmailToFilter = "[email protected]"; // 要筛选的邮箱
processJsonData(sampleJson, targetEmailToFilter);
}
}以上就是Java/Android中解析JSONArray并按特定键值筛选数据教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号