Java中JSON数据的读取和解析

这篇具有很好参考价值的文章主要介绍了Java中JSON数据的读取和解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

  • 配置fastJson

<!--引入fastjson依赖-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.35</version>
</dependency>
  • 构建工具类(方便多次调用时重复使用)

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);
    }
  • json文件示例(以geojson为例,数据结构比较复杂,只是层次比较多)

{
    "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);
  • 读取json对象中的"features"字段内容,是数组类型的,采用以下方式:

// 方式一
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");
  • 整体解析:文章来源地址https://www.toymoban.com/news/detail-520877.html

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");

到了这里,关于Java中JSON数据的读取和解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Unity 3D】C#从JSON文件中读取、解析、保存数据(附源码)

    JSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式存储和表示数据,简洁和清晰的层次结构使JSON成为理想的数据交换语言,易于读者阅读和编写,同时也易于机器解析和生成,并有效的提高网络传输效率 生成JSON数据实例代码如下 下面的代码将JSON中数据

    2024年02月11日
    浏览(58)
  • 如何使用 Java 将 JSON 文件读取为字符串?这三种方法很管用!

    JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,它可以用来存储和传输结构化的数据。在 Java 中,有多种方法可以将 JSON 文件读取为字符串,本文将介绍其中的几种。 java.io 包中提供了一些类,如 FileReader、BufferedReader、InputStreamReader 等,可以用来读取文件的内容。

    2024年02月01日
    浏览(83)
  • Java 解析多层嵌套json数据及json字符串与对象的相互转换

    本文主要介绍java解析多层嵌套json数据以及字符串与JSON对象之间的相互转换,包括:json字符串的取值,json对象与字符串的相互转换,字符串转化为java对象,字符串转化为javaList列表等。 提示:以下是本篇文章正文内容,下面案例可供参考 数据格式:JSON实际上就是键值对(

    2024年02月04日
    浏览(58)
  • Java解析JSON复杂数据的第三种思路

    本文介绍了Java解析JSON复杂数据的第三种思路,通过改变思路,按照新的流程获取数据。文章详细解析了接口JSON数据,并提供了JSON转XML数据

    2024年01月25日
    浏览(57)
  • 读取JSON文件 如何在Unity中读取Json文件中的数据

    Josn是一种轻量级的数据交换格式,JSON能够描述四种简单的类型(字符串、数字、布尔值及null)和两种结构化类型(对象及数组),在Unity里经常用Json来处理大量的字符串,容易解析,效率非常快。 基本结构 1、语法 数据存在键值对中 数据由逗号分隔 花括号保存对象 方括号保存

    2024年02月15日
    浏览(41)
  • 【Unity】C# 创建/读取/解析JSON数据

    判断是否存在JSON数据文件没有则创建并保存

    2024年02月16日
    浏览(65)
  • .NET学习笔记----关于.NET Core那些事(3)【配置文件的读取、json文件的通用解析、读取静态文件】

    appsettings.json准备 控制器中读取json 定义与配置文件中需要获取的标签结构完全一致的实体类:IConfiguration .Bind() ----反序列化 要读取的json字符串 定义的实体类 读取json 用到的json字符串 == 用到的类 Startup.cs中的配置 控制器中的代码 运行结果 当我们用《关于.NET Core那些事(2)》

    2024年02月04日
    浏览(37)
  • Java:SpringBoot使用AES对JSON数据加密和解密

    客户端和服务端都可以加密和解密,使用base64进行网络传输 加密方 解密方 2.1、项目结构 2.2、常规业务代码 pom.xml Application.java WebMvcConfig.java CrossConfig.java JsonRequest.java JsonResult.java JsonResultVO.java IndexController.java UserController.java 2.3、加密的实现 application.yml SecretData.java DecryptRequ

    2024年02月11日
    浏览(51)
  • JAVA读取文本转成JSON

    要将包含制表符的文本数据转换为JSON格式,你可以使用Java的JSON库,例如Jackson或Gson。以下是一个使用Jackson库将包含制表符的文本数据转换为JSON的示例代码: 如果使用Maven,可以在pom.xml文件中添加以下依赖: ** ** 总结: 在这个例子中,tabSeparatedData变量包含制表符分隔的文

    2024年01月23日
    浏览(30)
  • Unity文本框解析读取mqtt服务器JSON数据

    本次内容是讲述如何将mqtt服务器中接收到的数据在Unity3D的文本框控件中显示JSON键值对中的“值”。 需求: 1.GameObject——UI——Text (将Unity 3D的文本框控件置于场景) 命名空间引用: using UnityEngine.UI; 2. Newtonsoft插件 命名空间引用: Newtonsoft.Json.Linq; 3.MQTT通讯需求: (1)h

    2023年04月08日
    浏览(74)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包