文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java中JSON数据的读取和解析

2023-09-11 08:13

关注

        在做springboot项目时用到了json文件读取和解析,所以在这里记录一下学习过程中总结的一些点,希望对大家有帮助~

    com.alibaba    fastjson    1.2.35
public static JSONObject readJsonFile(String filename){        String jsonString = "";        File jsonFile = new File(filename);        try {            FileReader fileReader = new FileReader(jsonFile);            Reader reader = new InputStreamReader(new FileInputStream(jsonFile),"utf-8");            int ch = 0;            StringBuffer stringBuffer = new StringBuffer();            while ((ch = reader.read()) != -1){                stringBuffer.append((char) ch);            }            fileReader.close();            reader.close();            jsonString = stringBuffer.toString();        } catch (FileNotFoundException e){            JSONObject notFoundJson = new JSONObject();            notFoundJson.put("code",Code.GET_ERR);            notFoundJson.put("msg","该地区GeoJson文件不存在!");            return notFoundJson;        } catch (IOException e) {            e.printStackTrace();        }        return JSONObject.parseObject(jsonString);    }
{    "type": "FeatureCollection",    "features": [        {            "type": "Feature",            "properties": {                "adcode": 110101,                "name": "东城区",                "center": [                    116.418757,                    39.917544                ],                "centroid": [                    116.416739,                    39.912912                ],                "childrenNum": 0,                "level": "district",                "acroutes": [                    100000,                    110000                ],                "parent": {                    "adcode": 110000                }            },            "geometry": {                "type": "MultiPolygon",                "coordinates": [                    [                        [                            [                                116.387664,                                39.960923                            ],                            [                                116.38948,                                39.961038                            ],                            [                                116.389506,                                39.963147                            ],                            [                                116.396959,                                39.963204                            ]                        ]                    ]                ]            }        }    ]}
String filePath = "文件路径";// 读取json文件JSONObject jsonObejct = readJsonFile(filePath);
// 方式一JSONArray featureArray = JSON.parseArray(jsonObejct.get("features").toString());// 方式二JSONArray featureArray = jsonObejct.getJSONArray("features");
// 方式一JSONObject propertiesObject = JSONObject.parseObject(regionObject.getString("properties"));// 方式二JSONObject propertiesObject = jsonObejct.getJSONArray("features").getJSONObject(0).getJSONObject("properties");
// 方式一String type = jsonObejct.get("type").toString();// 方式二String type = jsonObejct.getString("type");
// 方式一String type = jsonObejct.get("type").toString();// 方式二String type = jsonObejct.getString("type");
String filePath = "文件地址/文件名.json";JSONObject jsonObejct = ReadJsonUtils.readJsonFile(filePath);​// 方式一(很复杂,语句分开,但是结构清晰)// 读取json文件的features字段,并转换为json数组JSONArray featureArray = JSON.parseArray(jsonObejct.get("features").toString());// 读取数组第一个元素,为地区对象JSONObject regionObject = JSONObject.parseObject(featureArray.get(0).toString());// 读取地区对象中的参数对象JSONObject propertiesObject = JSONObject.parseObject(regionObject.getString("properties"));// 读取参数对象的名称String name = propertiesObject.getString("name");// 读取参数对象的地区代码int adcode = propertiesObject.getIntValue("adcode");// 读取地区对象的几何对象JSONObject geometryObject = JSONObject.parseObject(regionObject.get("geometry").toString());// 读取几何字段中的坐标数组JSONArray coordinates = JSONObject.parseArray(geometryObject.get("coordinates").toString());// 读取几何对象中的类型名称String type = geometryObject.getString("type");​// 方式二(无需每次重新转换类型,一行搞定)String name = jsonObejct.getJSONArray("features").getJSONObject(0).getJSONObject("properties").getString("name");String type = jsonObejct.getJSONArray("features").getJSONObject(0).getJSONObject("geometry").getString("type");JSONArray coordinates = jsonObejct.getJSONArray("features").getJSONObject(0).getJSONObject("geometry").getJSONArray("coordinates");

来源地址:https://blog.csdn.net/qq_45118905/article/details/127511551

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯