首页 > Java > java教程 > 正文

在Java/Android中高效解析JSONArray并按键值筛选数据

碧海醫心
发布: 2025-11-30 16:14:04
原创
366人浏览过

在Java/Android中高效解析JSONArray并按键值筛选数据

本文旨在详细阐述如何在javaandroid开发环境中解析json数组(jsonarray),遍历其中的json对象,并根据特定键值(如电子邮件地址)进行数据筛选,最终提取所需字段(如经纬度)进行进一步处理。教程将提供清晰的代码示例,并涵盖错误处理及注意事项,以确保数据解析的健壮性和效率。

JSON数组解析基础

在Java和Android应用开发中,处理来自网络请求或本地存储的JSON数据是常见的任务。当数据以JSON数组的形式组织时,我们需要遍历数组中的每个JSON对象,并从中提取所需的信息。

一个典型的JSON数组结构如下所示,它包含多个对象,每个对象都有一组键值对:

[
    {
        "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"
    }
    // ... 更多对象
]
登录后复制

要解析这样的数据,我们通常使用Android SDK自带的org.json包中的JSONArray和JSONObject类。

Qwen
Qwen

阿里巴巴推出的一系列AI大语言模型和多模态模型

Qwen 691
查看详情 Qwen

初始化JSONArray

首先,你需要将原始的JSON字符串转换为JSONArray对象。这通常在从网络API获取响应后进行。

立即学习Java免费学习笔记(深入)”;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;

// 假设有一个LatLng类,或者使用Android提供的com.google.android.gms.maps.model.LatLng
// 如果在Android项目中使用Google Maps SDK,可以直接使用其LatLng类。
// 这里为了示例独立性,提供一个简化的自定义LatLng类。
class LatLng {
    public double latitude;
    public double longitude;

    public LatLng(double latitude, double longitude) {
        this.latitude = latitude;
        this.longitude = longitude;
    }

    @Override
    public String toString() {
        return "LatLng{" +
               "latitude=" + latitude +
               ", longitude=" + longitude +
               '}';
    }
}

public class JsonDataProcessor {

    /**
     * 解析JSON字符串,根据目标邮箱筛选数据,并提取经纬度。
     *
     * @param jsonString 包含JSON数组的字符串。
     * @param targetEmail 用于筛选的电子邮件地址(纯文本格式)。
     * @return 匹配目标邮箱的所有经纬度列表。
     */
    public List<LatLng> parseAndFilterJson(String jsonString, String targetEmail) {
        List<LatLng> filteredLatLngList = new ArrayList<>();

        try {
            // 1. 将JSON字符串转换为JSONArray对象
            JSONArray jsonArray = new JSONArray(jsonString);

            // 2. 遍历JSONArray中的每个JSONObject
            for (int i = 0; i < jsonArray.length(); i++) {
                // 使用optJSONObject更安全,避免在索引处不是JSONObject或越界时抛出异常
                JSONObject jsonObject = jsonArray.optJSONObject(i); 

                if (jsonObject != null) {
                    // 3. 从JSONObject中提取所需字段
                    // 使用optString提供默认值,避免键不存在时抛出JSONException
                    String emailRaw = jsonObject.optString("email", ""); 
                    String latiStr = jsonObject.optString("lati", "0.0");
                    String longtStr = jsonObject.optString("longt", "0.0");

                    // 4. 应用筛选逻辑
                    // 注意:原始JSON中的email字段是HTML格式,实际应用中需要额外解析或清洗
                    // 这里假设targetEmail是纯文本,且email字段经过清洗后可直接比较
                    String cleanEmail = extractEmailFromHtml(emailRaw); // 假设存在一个清洗函数

                    if (cleanEmail.equals(targetEmail)) {
                        try {
                            double latitude = Double.parseDouble(latiStr);
                            double longitude = Double.parseDouble(longtStr);
                            filteredLatLngList.add(new LatLng(latitude, longitude));
登录后复制

以上就是在Java/Android中高效解析JSONArray并按键值筛选数据的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号