
本文旨在详细阐述如何在java和android开发环境中解析json数组(jsonarray),遍历其中的json对象,并根据特定键值(如电子邮件地址)进行数据筛选,最终提取所需字段(如经纬度)进行进一步处理。教程将提供清晰的代码示例,并涵盖错误处理及注意事项,以确保数据解析的健壮性和效率。
JSON数组解析基础
在Java和Android应用开发中,处理来自网络请求或本地存储的JSON数据是常见的任务。当数据以JSON数组的形式组织时,我们需要遍历数组中的每个JSON对象,并从中提取所需的信息。
一个典型的JSON数组结构如下所示,它包含多个对象,每个对象都有一组键值对:
[ { "num": "34304", "email": "[email protected]", "lati": "8888888", "longt": "88888888", "time": "2022-12-08 21:15:39" }, { "num": "34303", "email": "[email protected]", "lati": "8888", "longt": "88888", "time": "8888888" } // ... 更多对象]
要解析这样的数据,我们通常使用Android SDK自带的org.json包中的JSONArray和JSONObject类。
Cowriter
AI 作家,帮助加速和激发你的创意写作
107 查看详情
初始化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 parseAndFilterJson(String jsonString, String targetEmail) { List 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并按键值筛选数据的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1053850.html
微信扫一扫
支付宝扫一扫