Java遍历json字符串取值

java遍历json字符串,取得相应KV值时,各种麻烦,比如将json中的list取出来转为JSONArray,再将list中的object转化为map,再取值(之前的做法),仙子啊通过阿里的fastjson,可以很方便的直接将str转化为JSONArray,再将里面的object强转为JSONObject,然后再通过obj.getInteger(“key”)和obj.getString(“key”)等取值。

JSONArray json = (JSONArray) JSONArray.parse(str);
for (Object obj : json) {
    JSONObject jo = (JSONObject)obj;
    int status = jo.getInteger("status");
    String message= jo.getString("message");
    System.out.println("status---" + status + "---message---" + message);
}

1.当json字符串中有数组和map对象,遍历数据,数据格式如下:

[
    {
        "status":0,
        "tags":[
            "check:ntp"
        ],
        "timestamp":1492151922.198,
        "check":"datadog.agent.check_status",
        "host_name":"song-2",
        "message":null,
        "id":2
    },
    {
        "status":0,
        "tags":null,
        "timestamp":1492151922.2325,
        "check":"datadog.agent.up",
        "host_name":"song-2",
        "message":null,
        "id":5
    }
]

解析上面json字符串数据,如果不使用如fastjson或者Gson时,解析方法如下:

方法一

/**
     * 主机详情中,异常错误信息的报错的平台服务状态和message
     * @param str
     * @return
     * @throws Exception
     */
    private List<Map<String,String>> operStr(String str) throws Exception{
        List<Map<String,String>> mList = new ArrayList<Map<String,String>>();//探针开启的服务名list
        JSONArray json = (JSONArray) JSONArray.parse(str);
        Map<String,Object> objMap = null;
        Map<String,String> resMap = null;
        for (Object obj : json) {
            objMap = Obj2Map(obj);
            @SuppressWarnings("unchecked")
            Map<String,Object> mObj = (Map<String, Object>) objMap.get("map");
            int status = (Integer) mObj.get("status");
            if(status != 0){
                resMap = new HashMap<String,String>();
                switch (status) {
                case 1:
                    resMap.put("status","WARNING");
                    break;
                case 2:
                    resMap.put("status","ERROR");
                    break;
                case 3:
                    resMap.put("status","CRIT");
                    break;
                default:
                    break;
                }
                resMap.put("serviceName", ((String) mObj.get("check")).split("\\.")[0]);
                resMap.put("msg", (String)mObj.get("message"));
                mList.add(resMap);
            }
        }
        return mList;
    }

    /**
     * object转map
     * @param obj
     * @return
     * @throws Exception
     */
    public Map<String,Object> Obj2Map(Object obj) throws Exception{
        if(obj == null){    
            return null;    
        }

        Map<String,Object> map=new HashMap<String, Object>();
        Field[] fields = obj.getClass().getDeclaredFields();
        for(Field field:fields){
            field.setAccessible(true);
            map.put(field.getName(), field.get(obj));
        }
        return map;
    }

方法二

/**
     * 主机详情中,异常错误信息的报错的平台服务状态和message
     * @param str
     * @return
     * @throws Exception
     */
    private List<Map<String,String>> operStr(String str) throws Exception{
        List<Map<String,String>> mList = new ArrayList<Map<String,String>>();//探针开启的服务名list
        JSONArray json = (JSONArray) JSONArray.parse(str);
        Map<String,String> resMap = null;
        for (Object obj : json) {
            JSONObject jo = (JSONObject)obj;
            int status = jo.getInteger("status");
            if(status != 0){
                resMap = new HashMap<String,String>();
                switch (status) {
                case 1:
                    resMap.put("status","WARNING");
                    break;
                case 2:
                    resMap.put("status","ERROR");
                    break;
                case 3:
                    resMap.put("status","CRIT");
                    break;
                default:
                    break;
                }
                resMap.put("serviceName", (jo.getString("check")).split("\\.")[0]);
                resMap.put("msg", jo.getString("message"));
                mList.add(resMap);
            }
        }
        return mList;
    }

2.当json字符串中是数组包含数组时候,遍历数据,数据格式如下:

[
    [
        "haproxy",
        "haproxy",
        0,
        "ERROR",
        "swdfghyjuikl",
        {

        }
    ],
    [
        "gearmand",
        "gearmand",
        0,
        "ERROR",
        "'Found no valid connections in list: [<GearmanConnection localhost:4730 connected=False>]'",
        {
            "version":"[8, 4, 20]"
        }
    ]
]

方法一

/**
     * 通过查询agentChecksStr解析得到异常信息
     * @param agentChecksStr
     * @return 
     */
    private List<Map<String,String>> getExceptInfoFromAgentChecks(String agentChecksStr){

        List<Map<String,String>> mList = new ArrayList<Map<String,String>>();//探针开启的服务名list
        //mList  主机详情中,异常错误信息的报错的平台服务状态和message
        Object jsonArray = JSONArray.parse(agentChecksStr);

        @SuppressWarnings("unchecked")
        List<List<Object>> list= (List<List<Object>>) jsonArray;
        Map<String,String> map = null;

        for(int i=0;i<list.size();i++){
            map = new HashMap<String,String>();
            String status = list.get(i).get(3).toString();
            if(!status.equals("OK")){
                String serviceName = list.get(i).get(0).toString();
                String msg = list.get(i).get(4).toString();
                map.put("serviceName", serviceName);
                map.put("status", status);
                map.put("msg", msg);
                mList.add(map);
            }
        }
        return mList;
    }

方法二

/**
     * 通过查询agentChecksStr解析得到异常信息
     * @param agentChecksStr
     * @return 
     */
    private List<Map<String,String>> getExceptInfoFromAgentChecks(String agentChecksStr){
        //探针开启的服务名list
        List<Map<String,String>> mList = new ArrayList<Map<String,String>>();
        JSONArray jsonArray = (JSONArray) JSONArray.parse(agentChecksStr);
        Map<String,String> map = null;
        for (Object obj : jsonArray) {
            map = new HashMap<String,String>();
            JSONArray ja = (JSONArray)obj;
            String status = ja.getString(3);
            if(!status.equals("OK")){
                String serviceName = ja.getString(0);
                String msg = ja.getString(4);
                map.put("serviceName", serviceName);
                map.put("status", status);
                map.put("msg", msg);
                mList.add(map);
            }
        }
        return mList;
    }

Gson将json字符串转化为json对象:



import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

public class MainTest {
    public static void main(String[] args) throws Exception{

        String jsonstr0 = "{\"alarmDetails\":{\"conditionDetails\":{\"alarmId\":7,\"alarmNodataNotifyTime\":1,\"alarmNowSeriesWaitTime\":2},\"conditionStatic\":{\"alarmId\":7,\"conditionAggregate\":\"avg\",\"conditionOperator\":1,\"conditionThresholdTime\":5,\"conditionThresholdValue\":\"123\"},\"metricDetails\":{\"alarmId\":7,\"metricAggregater\":\"avg\",\"metricBy\":\"host\",\"metricExcludeTag\":\"host:paas-177\",\"metricName\":\"system.cpu.user\",\"metricQ\":\"avg:system.cpu.user{#address:wuhan,!host:paas-177}by{host}\",\"metricTag\":\"#address:wuhan\"},\"notify\":[{\"alarmId\":7,\"notifyChannel\":5,\"notifyUserId\":1},{\"alarmId\":7,\"notifyChannel\":5,\"notifyUserId\":2}],\"view\":{\"alarmExpression\":\"avg(last_5m)avg:system.cpu.user{#address:wuhan,!host:paas-177}by{host}>123.0\",\"alarmId\":7,\"alarmLastValue\":\"UP\",\"alarmName\":\"static_metric\",\"alarmStatus\":1,\"alarmType\":2,\"alarmTypeJoin\":3,\"createTime\":\"2017-06-28 17:25:52.0\",\"createUserId\":1,\"isDisable\":false,\"lastAlarmTime\":\"2017-06-28 17:25:27.0\",\"metricName\":\"system.cpu.user\",\"metricTag\":\"#address:wuhan\",\"updateTime\":\"2017-06-29 15:49:18.0\"}},\"alarmId\":7,\"allMark\":{\"avg:system.cpu.user{host:cfeng-4,#address:wuhan,!host:paas-177}\":{\"changePutTime\":true,\"lastPutTsdbTime\":1499655343,\"lastSuccessCheckTime\":1499655349,\"series\":\"avg:system.cpu.user{host:cfeng-4,#address:wuhan,!host:paas-177}\",\"tagMap\":{\"host\":\"cfeng-4\",\"#address\":\"wuhan\",\"!host\":\"paas-177\"}}},\"joinType\":3,\"useMetricUnit\":\"percent\",\"validataDetails\":{\"status\":0,\"validataMerges\":[{\"alarmMarkDto\":{\"changePutTime\":true,\"lastPutTsdbTime\":1499655343,\"lastSuccessCheckTime\":1499655349,\"series\":\"avg:system.cpu.user{host:cfeng-4,#address:wuhan,!host:paas-177}\",\"tagMap\":{\"host\":\"cfeng-4\",\"#address\":\"wuhan\",\"!host\":\"paas-177\"}},\"status\":0,\"tag\":\"host:cfeng-4\",\"validataNodata\":{\"currentTime\":1499655349,\"isNodata\":false,\"lastSuccessCheckTime\":1499655349,\"series\":\"avg:system.cpu.user{host:cfeng-4,#address:wuhan,!host:paas-177}\",\"tag\":{\"host\":\"cfeng-4\",\"#address\":\"wuhan\",\"!host\":\"paas-177\"},\"thresholdTime\":60},\"validataStatic\":{\"converToThresholdValue\":123.0,\"end\":1499655343,\"intervalAggregator\":\"avg\",\"isAlart\":true,\"operator\":1,\"series\":\"avg:system.cpu.user{host:cfeng-4,#address:wuhan,!host:paas-177}\",\"start\":1499655043,\"sysUnit\":\"percent\",\"tag\":{\"#address\":\"wuhan\",\"host\":\"cfeng-4\",\"!host\":\"paas-177\"},\"thresholdTime\":300,\"thresholdValue\":\"123\",\"value\":5.715769243240357}}],\"validataTimeSeconds\":1499655349}}";
        String jsonstr1 = "{\"alarmDetails\":{\"conditionDetails\":{\"alarmId\":7,\"alarmNodataNotifyTime\":1,\"alarmNowSeriesWaitTime\":2},\"conditionStatic\":{\"alarmId\":7,\"conditionAggregate\":\"avg\",\"conditionOperator\":1,\"conditionThresholdTime\":5,\"conditionThresholdValue\":\"123\"},\"metricDetails\":{\"alarmId\":7,\"metricAggregater\":\"avg\",\"metricBy\":\"host\",\"metricExcludeTag\":\"host:paas-177\",\"metricName\":\"system.cpu.user\",\"metricQ\":\"avg:system.cpu.user{#address:wuhan,!host:paas-177}by{host}\",\"metricTag\":\"#address:wuhan\"},\"notify\":[{\"alarmId\":7,\"notifyChannel\":5,\"notifyUserId\":1},{\"alarmId\":7,\"notifyChannel\":5,\"notifyUserId\":2}],\"view\":{\"alarmExpression\":\"avg(last_5m)avg:system.cpu.user{#address:wuhan,!host:paas-177}by{host}>123.0\",\"alarmId\":7,\"alarmLastValue\":\"UP\",\"alarmName\":\"static_metric\",\"alarmStatus\":1,\"alarmType\":2,\"alarmTypeJoin\":3,\"createTime\":\"2017-06-28 17:25:52.0\",\"createUserId\":1,\"isDisable\":false,\"lastAlarmTime\":\"2017-06-28 17:25:27.0\",\"metricName\":\"system.cpu.user\",\"metricTag\":\"#address:wuhan\",\"updateTime\":\"2017-06-29 15:49:18.0\"}},\"alarmId\":7,\"allMark\":{\"avg:system.cpu.user{host:cfeng-4,#address:wuhan,!host:paas-177}\":{\"changePutTime\":true,\"lastPutTsdbTime\":1499655374,\"lastSuccessCheckTime\":1499655379,\"series\":\"avg:system.cpu.user{host:cfeng-4,#address:wuhan,!host:paas-177}\",\"tagMap\":{\"host\":\"cfeng-4\",\"#address\":\"wuhan\",\"!host\":\"paas-177\"}}},\"joinType\":3,\"useMetricUnit\":\"percent\",\"validataDetails\":{\"status\":0,\"validataMerges\":[{\"alarmMarkDto\":{\"changePutTime\":true,\"lastPutTsdbTime\":1499655374,\"lastSuccessCheckTime\":1499655379,\"series\":\"avg:system.cpu.user{host:cfeng-4,#address:wuhan,!host:paas-177}\",\"tagMap\":{\"host\":\"cfeng-4\",\"#address\":\"wuhan\",\"!host\":\"paas-177\"}},\"status\":0,\"tag\":\"host:cfeng-4\",\"validataNodata\":{\"currentTime\":1499655379,\"isNodata\":false,\"lastSuccessCheckTime\":1499655379,\"series\":\"avg:system.cpu.user{host:cfeng-4,#address:wuhan,!host:paas-177}\",\"tag\":{\"host\":\"cfeng-4\",\"#address\":\"wuhan\",\"!host\":\"paas-177\"},\"thresholdTime\":60},\"validataStatic\":{\"converToThresholdValue\":123.0,\"end\":1499655374,\"intervalAggregator\":\"avg\",\"isAlart\":true,\"operator\":1,\"series\":\"avg:system.cpu.user{host:cfeng-4,#address:wuhan,!host:paas-177}\",\"start\":1499655074,\"sysUnit\":\"percent\",\"tag\":{\"#address\":\"wuhan\",\"host\":\"cfeng-4\",\"!host\":\"paas-177\"},\"thresholdTime\":300,\"thresholdValue\":\"123\",\"value\":5.089640821729388}}],\"validataTimeSeconds\":1499655379}}";

        Set<String> set = new HashSet<String>();

        set.add(jsonstr0);
        set.add(jsonstr1);


        Gson gs = new Gson();

        List<Object> eventList = new ArrayList<Object>();

        for (String str : set) {

            JsonObject returnData = new JsonParser().parse(str).getAsJsonObject();
            JsonObject ad = returnData.get("alarmDetails").getAsJsonObject();
            JsonObject vd = returnData.get("validataDetails").getAsJsonObject();
            JsonArray vm = vd.get("validataMerges").getAsJsonArray();
            JsonArray nf = ad.get("notify").getAsJsonArray();
            JsonObject v = ad.get("view").getAsJsonObject();
            String validataTimeSeconds = vd.get("validataTimeSeconds").toString();

            for (JsonElement je : vm) {
                je.getAsJsonObject().add("view", v);
                je.getAsJsonObject().add("notify", nf);
                je.getAsJsonObject().addProperty("validataTimeSeconds", Long.parseLong(validataTimeSeconds));

                eventList.add(je);
            }
        }

        for (Object obj : eventList) {
            String inParam = gs.toJson(obj);
            System.out.println(inParam);
        }

        System.out.println(gs.toJson(eventList));

    }
}
//获取设备信息(只有硬件设备和虚拟设备有)
HashMap<String,String> paramMap = new HashMap<String,String>();
paramMap.put("hostid", mHostId);
paramMap.put("ptype", dto.getPtype());
paramMap.put("type_flag", dto.getTypeFlag());
paramMap.put("api_key", apikey);
String resStr = HttpUtils.get(DEVICE_INFO_URL, paramMap);

JSONObject jobj = JSON.parseObject(resStr);
JSONObject obj = (JSONObject)jobj.get("result");

if(obj.size() != 0){
    String restr = jobj.get("result").toString();
    DeviceInfoDto deviceInfoDto = new Gson().fromJson(restr, DeviceInfoDto.class);
    dto.setDeviceInfo(deviceInfoDto);
}
List<Map<Integer, Long>> result = new ArrayList<Map<Integer, Long>>();
Map<String, String> timeMap = null;
List<Map<String, String>> timeArr = new ArrayList<Map<String, String>>();
for (int j = 0; j < result.size(); j++) {
timeMap = new HashMap<String, String>();
if (j == result.size() - 1) {
    timeMap.put("startTime",result.get(j).get(result.get(j).keySet().iterator().next()) + "");
    timeMap.put("endTime", System.currentTimeMillis() + "");
} else {
    timeMap.put("startTime", result.get(j).get(result.get(j).keySet().iterator().next()) + "");
    timeMap.put("endTime", (result.get(j+1).get(result.get(j+1).keySet().iterator().next()) - 1) + "");
}
timeMap.put("hostName", "*");

//1:info,2:error,3:success,4:warning
Integer key = result.get(j).keySet().iterator().next();
if (key == 1) {
    timeMap.put("status", "info");
} else if (key == 2) {
    timeMap.put("status", "error");
} else if (key == 3) {
    timeMap.put("status", "success");
} else if (key == 4) {
    timeMap.put("status", "warning");
} 

timeArr.add(timeMap);
}
<think>首先,用户的问题是:“我想使用Java遍历JSON数据的方法 请问java 遍历 json 数据的示例代码”。这直接要求提供Java代码示例来遍历JSON数据。 我需要参考提供的引用内容,这些是关于JSON处理的Java代码示例。虽然这些引用不是用户直接的需求,但它们提供了上下文和示例。 - 引用[1]:讨论遍历JSONArray。 - 引用[2]:包含遍历JSONArray的代码示例。 - 引用[3]:提到二维数组转JSON。 - 引用[4]:讨论遍历JsonObject对象。 用户的问题是关于遍历JSON数据的,所以我应该专注于遍历JSONArray和JSONObject。 我的回答需要: - 使用中文回答。 - 结构清晰,逐步解决问题。 - 保证回答真实可靠。 - 在回答中引用的段落末尾自然地添加引用标识。 - 生成相关问题。 - 所有行内数学表达式使用$...$格式,但这里可能不涉及数学表达式,因为主题是JSON处理。 - 独立公式使用$$...$$格式,但同样,可能不需要。 用户的问题中没有数学内容,所以我可以忽略数学格式要求。 回答结构: 1. **介绍**:简要解释JSON遍历的重要性。 2. **步骤**:逐步展示如何遍历JSON数据。 3. **代码示例**:提供Java代码示例,使用JSON库如org.json或Gson。 4. **解释**:解释代码。 5. **相关问题**:生成相关问题。 使用什么JSON库?引用[2]使用了JSONObject和JSONArray,这似乎是org.json库。引用[4]也提到了JsonObject。我应该使用org.json库,因为它常见且简单。 在Java中,常见的JSON库有org.json、Gson、Jackson等。引用中使用了org.json,所以我将使用它。 步骤: 1. 添加依赖:需要引入JSON库。 2. 解析JSON字符串。 3. 遍历JSON对象或数组。 代码示例: - 遍历JSONObject:键对。 - 遍历JSONArray:数组元素。 从引用[2]: ```java String str ="[{'otitle':'会','source':'7'},{'otitle':'不会','source':'3'}]"; JSONArray jsonArray=JSONArray.fromObject(str); for(int i=0;i<jsonArray.size();i++){ JSONObject job = jsonArray.getJSONObject(i); System.out.println(job.get("otitle")+":"+job.get("source")) ; } ``` 我需要确保代码正确。引用[2]使用了JSONArray.fromObject,但在org.json中,JSONArray的构造函数需要JSON字符串。 在org.json库中,创建JSONArray是`new JSONArray(str)`,而不是`JSONArray.fromObject`。可能引用使用了不同的库,如json-lib。 为了准确,我应该使用标准的org.json库。 标准org.json库用法: - 添加依赖:如`org.json:json:20210307`。 - 解析:`JSONObject obj = new JSONObject(jsonString);` 或 `JSONArray arr = new JSONArray(jsonArrayString);` 在引用[2]中,它使用了`JSONObject.fromObject`和`JSONArray.fromObject`,这可能是json-lib库。但为了通用性,我使用org.json。 用户可能没有指定库,所以我可以选择org.json。 在回答中,我应该指定库。 生成相关问题: - 基于JSON遍历,如性能、错误处理、不同库比较等。 引用标识:在回答中,如果引用内容,添加[^n],但引用是提供的,不是我的回答的一部分。系统指令说:“回答中引用的段落末尾自然地添加引用标识”,但这里我引用的是提供的引用内容。 参考站内引用:引用[1]到[4]是提供的,我应该参考它们。 在回答中,我可以提到这些引用作为示例。 最终回答结构: 1. 介绍JSON遍历。 2. 使用org.json遍历JSONObject。 3. 使用org.json遍历JSONArray。 4. 代码示例。 5. 解释。 6. 相关问题。 代码使用中文注释?指令说使用中文回答,但代码可以是英文。 确保LaTeX语法正确,但无数学内容。 相关问题: 1. 如何处理嵌套JSON数据? 2. 使用Gson库遍历JSON的差异? 3. JSON遍历中的异常处理? 4. 如何将遍历结果存储到Java对象?</think>### Java遍历JSON数据的示例代码 在Java中处理JSON数据时,常用的库包括org.json、Gson或Jackson。本回答基于**org.json库**(轻量级且易用),逐步展示如何遍历JSON对象(JSONObject)和JSON数组(JSONArray)。以下是完整示例,包括依赖添加、代码实现和解释。 #### 步骤1: 添加依赖 首先,在项目中引入org.json库。如果使用Maven,在`pom.xml`中添加: ```xml <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20231013</version> <!-- 使用最新版本 --> </dependency> ``` 如果手动添加,下载[json.jar](https://github.com/stleary/JSON-java)并导入项目。 #### 步骤2: 遍历JSON对象(JSONObject) JSON对象是键对集合(如`{"name":"张三","age":25}`)。遍历时,使用`keys()`方法获取所有键,然后迭代取值。 ```java import org.json.JSONObject; public class JsonTraversal { public static void main(String[] args) { // 示例JSON字符串(一个JSON对象) String jsonString = "{\"name\":\"张三\", \"age\":25, \"hobby\":[\"编程\", \"读书\"]}"; // 解析字符串JSONObject JSONObject jsonObject = new JSONObject(jsonString); // 遍历所有键对 for (String key : jsonObject.keySet()) { Object value = jsonObject.get(key); System.out.println("键: " + key + ", : " + value); } } } ``` **输出示例:** ``` 键: name, : 张三 键: age, : 25 键: hobby, : ["编程","读书"] ``` **解释:** - `jsonObject.keySet()` 返回所有键的集合。 - `jsonObject.get(key)` 获取对应可能是基本类型、字符串或嵌套JSON结构。 - 如果嵌套JSON数组(如`hobby`),需进一步处理(见步骤3)。 #### 步骤3: 遍历JSON数组(JSONArray) JSON数组是元素的有序集合(如`[{"title":"A"},{"title":"B"}]`)。遍历时,使用循环索引获取每个元素。 ```java import org.json.JSONArray; import org.json.JSONObject; public class JsonTraversal { public static void main(String[] args) { // 示例JSON字符串(一个JSON数组) String jsonArrayString = "[{\"title\":\"Java入门\", \"price\":50}, {\"title\":\"数据结构\", \"price\":60}]"; // 解析字符串JSONArray JSONArray jsonArray = new JSONArray(jsonArrayString); // 遍历数组中的每个对象 for (int i = 0; i < jsonArray.length(); i++) { JSONObject item = jsonArray.getJSONObject(i); // 获取第i个元素(假设元素是JSONObject) String title = item.getString("title"); int price = item.getInt("price"); System.out.println("元素 " + i + ": 书名=" + title + ", 价格=" + price); } } } ``` **输出示例:** ``` 元素 0: 书名=Java入门, 价格=50 元素 1: 书名=数据结构, 价格=60 ``` **解释:** - `jsonArray.length()` 返回数组长度。 - `jsonArray.getJSONObject(i)` 获取索引i处的JSONObject(如果元素是对象)。 - 如果数组元素是基本类型(如字符串),使用`getString(i)`等。 #### 完整示例:处理嵌套JSON 实际JSON数据常含嵌套结构(如对象内嵌数组)。以下代码展示复杂场景的遍历: ```java import org.json.JSONArray; import org.json.JSONObject; public class NestedJsonTraversal { public static void main(String[] args) { // 示例JSON(对象内嵌数组) String jsonString = "{\"user\":\"李四\", \"scores\":[85, 90, 78]}"; JSONObject root = new JSONObject(jsonString); // 获取外层键 System.out.println("用户: " + root.getString("user")); // 获取内嵌数组 JSONArray scores = root.getJSONArray("scores"); for (int i = 0; i < scores.length(); i++) { System.out.println("分数 " + i + ": " + scores.getInt(i)); } } } ``` **输出示例:** ``` 用户: 李四 分数 0: 85 分数 1: 90 分数 2: 78 ``` #### 注意事项 1. **异常处理**:使用`try-catch`捕获`JSONException`(如键不存在或类型不匹配): ```java try { JSONObject obj = new JSONObject(jsonString); } catch (JSONException e) { System.err.println("JSON解析错误: " + e.getMessage()); } ``` 2. **库选择**:org.json适合简单场景;复杂需求(如对象映射)推荐Gson或Jackson[^2]。 3. **性能**:遍历大型JSON时,避免频繁创建临时对象,使用流式API(如Jackson的`JsonParser`)优化内存[^1]。 ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值