• ChatGPT:使用fastjson读取JSON数据问题——如何使用com.alibaba.fastjson库读取JSON数据的特定字段


    ChatGPT:使用fastjson读取JSON数据问题——如何使用com.alibaba.fastjson库读取JSON数据的特定字段



    有一段Json字符串:
    {
        "code": 200,
        "message": "success",
        "data": {
            "total": "1",
            "list": [
                {
                    "question_no": "215202",
                    "question_stem": "师生进入生化类实验室工作,一定要搞清楚( )等位置,出现情况能做好相应的自救工作。",
                    "v_establish_date": "2021-07-02",
                    "professional_level_id": "01",
                    "professional_level": "通识类",
                    "knowledge_point_id": "71",
                    "knowledge_point": "实验室安全",
                    "question_type_id": "01",
                    "question_type": "单选题",
                    "user_id": null,
                    "user_name": null,
                    "q_college": "学校",
                    "q_college_id": "%",
                    "numrow": "1",
                    "act": {
                        "questionDelete": "删除",
                        "questionModify": "修改",
                        "getQuestionDetail": "查看",
                        "copyQuestion": "复制到本单位题库"
                    }
                }
            ]
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    怎么结合com.alibaba的fastjson读取到question_no?
    ChatGPT:
    要使用阿里巴巴的FastJSON库来解析JSON字符串并提取其中的question_no字段,您需要按照以下步骤进行操作:
    1. 导入FastJSON库。
    2. 使用FastJSON的JSONObject来解析JSON字符串。
    3. 获取data字段对应的JSONObject。
    4. 获取list字段对应的JSONArray。
    5. 获取数组中的第一个元素,然后获取其中的question_no字段。
    以下是示例代码:
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.JSONObject;
    
    public class Main {
        public static void main(String[] args) {
            String jsonString = "{\n" +
                "    \"code\": 200,\n" +
                "    \"message\": \"success\",\n" +
                "    \"data\": {\n" +
                "        \"total\": \"1\",\n" +
                "        \"list\": [\n" +
                "            {\n" +
                "                \"question_no\": \"215202\",\n" +
                "                \"question_stem\": \"师生进入生化类实验室工作,一定要搞清楚( )等位置,出现情况能做好相应的自救工作。\",\n" +
                "                \"v_establish_date\": \"2021-07-02\",\n" +
                "                \"professional_level_id\": \"01\",\n" +
                "                \"professional_level\": \"通识类\",\n" +
                "                \"knowledge_point_id\": \"71\",\n" +
                "                \"knowledge_point\": \"实验室安全\",\n" +
                "                \"question_type_id\": \"01\",\n" +
                "                \"question_type\": \"单选题\",\n" +
                "                \"user_id\": null,\n" +
                "                \"user_name\": null,\n" +
                "                \"q_college\": \"学校\",\n" +
                "                \"q_college_id\": \"%\",\n" +
                "                \"numrow\": \"1\",\n" +
                "                \"act\": {\n" +
                "                    \"questionDelete\": \"删除\",\n" +
                "                    \"questionModify\": \"修改\",\n" +
                "                    \"getQuestionDetail\": \"查看\",\n" +
                "                    \"copyQuestion\": \"复制到本单位题库\"\n" +
                "                }\n" +
                "            }\n" +
                "        ]\n" +
                "    }\n" +
                "}";
    
            // 使用FastJSON解析JSON字符串
            JSONObject jsonObject = JSON.parseObject(jsonString);
    
            // 获取data字段对应的JSONObject
            JSONObject dataObject = jsonObject.getJSONObject("data");
    
            // 获取list字段对应的JSONArray
            JSONArray listArray = dataObject.getJSONArray("list");
    
            // 获取数组中的第一个元素
            JSONObject firstElement = listArray.getJSONObject(0);
    
            // 获取question_no字段的值
            String questionNo = firstElement.getString("question_no");
    
            System.out.println("question_no: " + questionNo);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    上述代码将打印出question_no字段的值"215202"。您可以根据实际需求进行进一步处理或存储。确保在项目中导入FastJSON库以使上述代码正常工作。

    得到的Json字符串是这样的怎么办?
    {"code":200,"message":"success","data":{"total":"1","list":[{"question_no":"215202","question_stem":"\u5e08\u751f\u8fdb\u5165\u751f\u5316\u7c7b\u5b9e\u9a8c\u5ba4\u5de5\u4f5c\uff0c\u4e00\u5b9a\u8981\u641e\u6e05\u695a\uff08\u3000\uff09\u7b49\u4f4d\u7f6e\uff0c\u51fa\u73b0\u60c5\u51b5\u80fd\u505a\u597d\u76f8\u5e94\u7684\u81ea\u6551\u5de5\u4f5c\u3002","v_establish_date":"2021-07-02","professional_level_id":"01","professional_level":"\u901a\u8bc6\u7c7b","knowledge_point_id":"71","knowledge_point":"\u5b9e\u9a8c\u5ba4\u5b89\u5168","question_type_id":"01","question_type":"\u5355\u9009\u9898","user_id":null,"user_name":null,"q_college":"\u5b66\u6821","q_college_id":"%","numrow":"1","act":{"questionDelete":"\u5220\u9664","questionModify":"\u4fee\u6539","getQuestionDetail":"\u67e5\u770b","copyQuestion":"\u590d\u5236\u5230\u672c\u5355\u4f4d\u9898\u5e93"}}]}}
    
    • 1
    ChatGPT:
    您提供的JSON字符串包含Unicode编码字符,这是一种在JSON中表示特殊字符的方式。在FastJSON中,您可以使用JSON.parseObject方法来解析这样的JSON字符串,FastJSON会自动处理Unicode编码字符。
    以下是如何解析包含Unicode编码字符的JSON字符串的示例代码:
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONObject;
    
    public class Main {
        public static void main(String[] args) {
            String jsonString = "{\"code\":200,\"message\":\"success\",\"data\":{\"total\":\"1\",\"list\":[{\"question_no\":\"215202\",\"question_stem\":\"\\u5e08\\u751f\\u8fdb\\u5165\\u751f\\u5316\\u7c7b\\u5b9e\\u9a8c\\u5ba4\\u5de5\\u4f5c\\uff0c\\u4e00\\u5b9a\\u8981\\u641e\\u6e05\\u695a\\uff08\\u3000\\uff09\\u7b49\\u4f4d\\u7f6e\\uff0c\\u51fa\u73b0\u60c5\u51b5\u80fd\u505a\u597d\u76f8\u5e94\u7684\u81ea\u6551\u5de5\u4f5c\\u3002\",\"v_establish_date\":\"2021-07-02\",\"professional_level_id\":\"01\",\"professional_level\":\"\\u901a\\u8bc6\\u7c7b\",\"knowledge_point_id\":\"71\",\"knowledge_point\":\"\\u5b9e\\u9a8c\\u5ba4\\u5b89\\u5168\",\"question_type_id\":\"01\",\"question_type\":\"\\u5355\\u9009\\u9898\",\"user_id\":null,\"user_name\":null,\"q_college\":\"\\u5b66\\u6821\",\"q_college_id\":\"%\",\"numrow\":\"1\",\"act\":{\"questionDelete\":\"\\u5220\\u9664\",\"questionModify\":\"\\u4fee\\u6539\",\"getQuestionDetail\":\"\\u67e5\\u770b\",\"copyQuestion\":\"\\u590d\\u5236\\u5230\\u672c\\u5355\\u4f4d\\u9898\\u5e93\"}}]}}";
    
            // 使用FastJSON解析JSON字符串
            JSONObject jsonObject = JSON.parseObject(jsonString);
    
            // 获取data字段对应的JSONObject
            JSONObject dataObject = jsonObject.getJSONObject("data");
    
            // 获取list字段对应的JSONArray
            JSONArray listArray = dataObject.getJSONArray("list");
    
            // 获取数组中的第一个元素
            JSONObject firstElement = listArray.getJSONObject(0);
    
            // 获取question_no字段的值
            String questionNo = firstElement.getString("question_no");
    
            System.out.println("question_no: " + questionNo);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    这个示例代码会正确解析包含Unicode编码字符的JSON字符串,并提取question_no字段的值。再次提醒确保在项目中导入FastJSON库。

  • 相关阅读:
    Go语言基础之基本语法
    go 命令行框架cobra
    ajax是异步还是同步?
    用Unity同时开发【微信小游戏】【安卓】【IOS】游戏#3.5 跨语言异步
    STM32 | 超声波实战
    了解web框架
    Java 21 新特性:Unnamed Classes and Instance Main Methods
    分享程序员面试的7个技巧
    [附源码]计算机毕业设计南通大学福利发放管理系统Springboot程序
    [补题记录] Atcoder Beginner Contest 295(E)
  • 原文地址:https://blog.csdn.net/XRT_knives/article/details/132984140