Java解析JSON文件

03-JSON-JSON数据和Java对象的相互转换(jackson解析器、注解、list、map) / getter 和 setter 方法省略上述代码中,使用 @JsonInclude 注解指定了在序列化过程中只包含非空的属性。})// getter 和 setter 方法省略// 省略属性和方法// 省略属性和方法上述代码中,使用 @JsonTypeInfo 和 @JsonSubTypes 注解定义了一个抽象的 Animal 类,其中 @JsonTypeInfo 注解指定了类型信息的序列化和反序列化规则,而 @JsonSubTypes 注解则用于指定可能的子类类型。 阅读详情

这篇文章主要讲讲 通过java去解析不同地方的json文件

通常我们需要解析本地的json文件或者服务器上的json文件。我们用来解析json格式的jar包有很多,jackson,fastjson,gson都行。但本人喜欢用fastjson。所以本篇都是以fastjson来解析json文件。

1.解析本地json文件

随便把一个json文件存储在本地的一个文件夹下,然后通过文件流将json文件内容读取出来。

然后转换成String,最后转json对象,然后再解析,获取自己想要的数据。

首先我们这个json文件的格式是:

{
    "type": "FeatureCollection",
    "features": [
        {
            "type": "Feature",
            "geometry": {
                "type": "Point",
                "coordinates": [
                    121.4672,
                    31.11606
                ]
            },
            "properties": {
                "id": "16N5877",
                "q": 1
            }
        },
        {
            "type": "Feature",
            "geometry": {
                "type": "Point",
                "coordinates": [
                    121.531212,
                    31.3701954
                ]
            }
        }
    ]
}

下面我们用到的是字符流:

	//把一个文件中的内容读取成一个String字符串
    public static String getStr(File jsonFile){
        String jsonStr = "";
        try {
            FileReader fileReader = new FileReader(jsonFile);
            Reader reader = new InputStreamReader(new FileInputStream(jsonFile),"utf-8");
            int ch = 0;
            StringBuffer sb = new StringBuffer();
            while ((ch = reader.read()) != -1) {
                sb.append((char) ch);
            }
            fileReader.close();
            reader.close();
            jsonStr = sb.toString();
            return jsonStr;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }

然后解析这个json

@Test
    public void shuiLing(){
        String json = "E:\\gis\\data\\pd20192021-07-08.json";
        File jsonFile = new File(json);
        //通过上面那个方法获取json文件的内容
        String jsonData = CommonUtil.getJsonStr(jsonFile);
        //转json对象
        JSONObject parse = (JSONObject)JSONObject.parse(jsonData);
        //获取主要数据
        JSONArray features = parse.getJSONArray("features");
        //挨个遍历 
        for (Object feature : features) {
            JSONObject featureObject =(JSONObject)feature;
            JSONObject properties = featureObject.getJSONObject("properties");
            JSONObject geometry = featureObject.getJSONObject("geometry");
            JSONArray coordinates = geometry.getJSONArray("coordinates");
//            System.out.println(coordinates);
            //通过创建对应的实体类去存储对应数据然后存库
            GisDetails gisDetails = new GisDetails();
            gisDetails.setCreateTime(new Date());
            String date = jsonFile.getName();
	 gisDetails.setDatetime(date.substring(date.indexOf("2021"),date.indexOf('.')));
            gisDetails.setId(properties.getString("id"));
            gisDetails.setQ(new BigDecimal(properties.getString("q")));
            gisDetails.setLat(new BigDecimal(coordinates.getString(1))); //维度
            gisDetails.setLon(new BigDecimal(coordinates.getString(0))); // 经度
//            System.out.println(properties);
            //如果数据量大不建议这样入库 直接拼接sql 然后插入一次
            int i = gisService.insertGisDetails(gisDetails);
            if (i>=0){
                log.info("==>成功"+gisDetails);
            }else{
                log.info("==》失败"+gisDetails);
            }
        }
    }

2.访问服务器上的json文件并解析到数据库中

使用这种方式就有一个坑需要注意了,通过url拉下来的json文件不能直接转json对象,因为有很多的斜杠和多余的引号需要处理。

然后还多了一步需要对url进行连接,连接成功才能读取json内容。

所以这里使用的java原生的URL去访问资源。然后我们通过tomcat去模拟。当然其他的url都可以读取,只要浏览器里能打开,并且是json格式。

@Test
public void shuiLing2(){
    String json = "http://localhost:8110/static/test2021-07-08.json";
    // 通过URL去访问服务器上的资源
    URL url = null;
    try {
        url = new URL(json);
        URLConnection urlCon = url.openConnection();
        urlCon.connect();         //获取连接
        InputStream is = urlCon.getInputStream();
        BufferedReader buffer = new BufferedReader(new InputStreamReader(is));
        StringBuffer bs = new StringBuffer();
        String l = null;
        while((l=buffer.readLine())!=null){
            bs.append(l).append("/n");
        }
        //去斜杠和引号
        String s = JSON.toJSONString(bs);
        s = s.replaceAll("\\\\","");
        //多余的换行符
        s = s.replace("/n","");
        //对第一个引号和最后一个引号处理
        s = s.substring(1,s.length()-1);
        JSONObject parse = (JSONObject)JSONObject.parse(s);
        JSONArray features = parse.getJSONArray("features");
        for (Object feature : features) {
            JSONObject featureObject =(JSONObject)feature;
            JSONObject properties = featureObject.getJSONObject("properties");
            JSONObject geometry = featureObject.getJSONObject("geometry");
            JSONArray coordinates = geometry.getJSONArray("coordinates");
            GisDetails gisDetails = new GisDetails();
            gisDetails.setCreateTime(new Date());
            gisDetails.setDatetime(json.substring(json.indexOf("2021"),json.indexOf('.')));
            gisDetails.setId(properties.getString("id"));
            gisDetails.setQ(new BigDecimal(properties.getString("q")));
            gisDetails.setLat(new BigDecimal(coordinates.getString(1))); //维度
            gisDetails.setLon(new BigDecimal(coordinates.getString(0))); // 经度
            int i = gisService.insertGisDetails(gisDetails);
            if (i>=0){
                log.info("==>成功"+gisDetails);
            }else{
                log.info("==》失败"+gisDetails);
            }
        }
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

然后如果对你有帮助记得点赞喔!

字节面试官:java读取json文件并解析 缓存维护方案一 如果是一读(线程B)一写(线程A)操作,「先操作缓存,再操作数据库」。流程图如下所示: 1.线程A发起一个写操作,第一步del cache 2.线程A第二步写入新数据到DB 3.线程B发起一个读操作,cache miss缓存失效了。 4.线程B从DB获取最新数据 5.线程B执行set cache,把从DB读到的数据,更新到缓存。 「这样看,没啥问题」。我们再看第二个流程图,如下: 1.线程A发起一个写操作,第一步del cache 2.此时线程B发起一个读 阅读详情

相关推荐

Java基础22(JSON解析 注解)

JSON是一种轻量级的数据交换格式。在使用Java进行应用程序的开发中,我们会面临类似“将Java对象转换成JSON格式”或者“将JSON格式的数据转换成Java对象“的需求,所以我们需要掌握如何使用第三方库来进行JSON格式数据的解析。fastjson 是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。所以,开发Web应用的时候,使用JSON作为数据传输,在浏览器端非常方便。

qq_52897007的博客 4182

Java中JSON数据的读取和解析

使用fastjson对json文件进行读取和解析,在springboot等项目中经常会遇到json数据传输问题,但是只需要其中部分字段,所以需要进行解析和提取有用信息。记录了一下自己学习中的一些常用总结,有错误望指正!

qq_45118905的博客 1万+

瑞萨CS+仿真器高级配置指南:从原理到实战优化RX系列MCU调试

在嵌入式系统开发中,仿真器是进行早期验证和深度调试的核心工具。它通过精确模拟目标微控制器的指令集、内存和外设行为,构建了一个虚拟的硬件沙盒环境。其工作原理在于对CPU核心、时钟系统和外设接口的软件模拟,使开发者能在无物理硬件时进行代码逻辑验证、内存布局规划和时序分析。这项技术的核心价值在于大幅降低开发成本、加速问题定位,并支持复杂场景的复现与测试。在瑞萨RX系列MCU开发中,CS+集成开发环境内置的仿真器功能尤为强大。本文聚焦于**指令解码缓存**和**外设时钟比率**等关键配置的深度解析,阐述如何通过优化

cmff98425的博客 621

Java如何快速读取&解析JSON数据(文件),获取想要的内容?

工作做,有时候会碰到一些复杂的Json格式数据(复杂的数据一般都是json.file文件),大部分字段可能对我们没有用,因此我们需要去主动格式化,只提取或者过滤我们想要的数据。按照上面的方法,我们可以快速的提取复杂的Json文件,快速获取我们想要的内容!如果文件特别大,可以考虑多线程的方式处理。

张小凡 1万+

Java解析JSON文件的方法

一、首先需要在Eclipse工程中导入相关的jar包,jar包参见链接:http://download.csdn.net/detail/filywysss/4991496 二、提供一份待解析的json文件,apkinfo.json如下: [ { "name":"帐号", "package_name":"com.android.account", "check_version":

Junit的博客 2803

Office Tool Plus:正版Office干净部署指南

Office部署是Windows新机配置的关键环节,涉及版本选择、架构匹配、语言支持与合规激活等基础技术问题。其核心原理基于微软官方Office Deployment Tool(ODT)的声明式XML配置机制,通过标准化流程确保安装可复现、可审计、无第三方捆绑。技术价值在于规避官网安装器的版本锁定、架构误配和语言缺失等常见风险,提升部署稳定性与安全性。典型应用场景包括企业批量部署、IT运维标准化、隐私敏感型用户自主安装。本文以Office Tool Plus为实践载体,深入解析ODT底层逻辑、XML配置规范

703

在java中解析json数据格式文件_解析JSON文件Java

我想在java中解析JSON文件,并从下面提到的文件中获取以下值:{"status": "OK","origin_addresses": [ "Vancouver,BC,Canada","Seattle,État de Washington,États-Unis" ],"destination_addresses": [ "San Francisco,Californie,États-Unis",...

weixin_32392867的博客 1393

【Unity】制作简易三维场景

本文介绍如何制作一个三维场景

CiNian_的博客 4625

如何用Java解析JSON文件

一、首先需要在Eclipse工程中导入相关的jar包,jar包参见链接:http://download.csdn.net/detail/filywysss/4991496二、提供一份待解析的json文件,apkinfo.json如下:[{"name":"帐号","package_name":"com.android.account","check_version":"1.2"},{&quo

m0_38129335的博客 2216

java Json解析和文件备份

java Json解析和文件备份 1、JSON解析,解析采用

诗雨远方的博客 725

Genesis物理引擎实战指南:轻量级确定性刚体仿真核心

刚体物理仿真作为机器人控制、嵌入式运动学验证和确定性游戏开发的基础技术,其核心在于数值稳定性、跨平台可复现性与约束求解精度。本文围绕线性互补问题(LCP)求解、半隐式欧拉积分和零依赖C++实现三大关键技术展开,解析如何在无GUI、低算力环境下构建可单步调试、帧级可控的确定性仿真系统。重点覆盖碰撞检测数学建模、关节局部坐标系绑定、质量-惯性张量一致性校验等工程落地关键点,适用于STM32、树莓派及教育实验场景。内容深度结合Genesis Physics Engine的源码实践,直击‘穿模’‘NaN’‘关节发软

ciya3282的博客 782

java json文件 解析_java解析json文件

/****/package com.XXX.json;import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileO...

weixin_39663360的博客 143

oracle两节点RAC,由于gipc导致某节点crs无法启动问题分析

两节点RAC,其中1 节点集群CRS无法启动。经过分析原因为2节点gipcd进程异常,导致节点之间无法正常通信,重启2节点gipcd.bin后问题得以恢复。 从现象来看,是 ora.crsd...

cuibaye0692的博客 4002

Java解析JSON文件的方法(一)

Java解析JSON文件的方法(一) 一、首先需要在Eclipse工程中导入相关的jar包,jar包参见链接:http://yunpan.alibaba-inc.com/share/link/NdA5b6IFK 二、 提供一份待解析的json文件,apkinfo.json如下: [ { “name”:“帐号”, “package_name”:“com.android.account”, “check_version”:“1.2” }, { “name”:“系统升级”, “package_name”:“com

weixin_53635760的博客 1万+

java解析json文件并入库

我整理的一些关于【java】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/bLN8S1Java 解析 JSON 文件并入库的完整流程 在现代软件开发中,处理 JSON 格式的数据是非常普遍的。尤其是在与前端交互或从 API 获取数据时。本文将引导你通过一个实际的例子:用 J...

weixin_41334794的博客 485

人工智能入门系列之一: 鸢尾花(Iris)多分类的神经网络详解及代码实现

这是最好的时代,我们一起来打造属于自动驾驶汽车上路、无人机飞天、智能机器人管工厂的AI未来 人工智能领域分化为两个阵营:其一是规则式(rule-based)方法,在人工智能早期占主峰;其二是神经网络(neural network)方法,后起之秀。随着硬件水平的提高,算力的指数式增长;人工智能的重心已经从规则式的专家时代转移到神经网络的数据时代。 “神经网络”不选择把人脑熟稔的逻辑规则传授给计算机...

NLP家的码奴小荷的博客 2万+

java读取本地json文件并解析多层json

json格式 { "code": "0", "msg": "成功!", "data": { "result": [ { "id": "1231231231", "title": "1231231", "img": "1232131231", "keywords": "3434", "d...

luopengdlc的专栏 2万+

文件上传漏洞攻击与防范方法

文件上传漏洞攻击与防范方法 文件上传漏洞简介: 文件上传漏洞是web安全中经常用到的一种漏洞形式。是对数据与代码分离原则的一种攻击。上传漏洞顾名思义,就是攻击者上传了一个可执行文件如木马,病毒,恶意脚本,WebShell等到服务器执行,并最终获得网站控制权限的高危漏洞。 文件上传漏洞危害: 上传漏洞与SQL注入或 XSS相比 , 其风险更大 , 如果 Web应用程序存在上传漏洞 , 攻击者上传...

m0_38103658的博客 4万+

解析云端Json文件到本地Java对象

解析云端Json文件到本地Java对象

niuguobao的博客 1327

java读取json文件并解析并修改

在上面的示例中,首先创建了一个ObjectMapper对象,然后使用它来读取JSON文件。读取后的JSON数据存储在JsonNode对象中,你可以使用get方法获取特定字段的值。我们将”age”字段的值增加了1,然后使用ObjectMapper对象将修改后的JSON数据写回到文件中。要在Java中读取和解析JSON文件,可以使用Java提供的JSON库,例如Jackson、Gson或JSON.simple。这个示例中使用的是Jackson库,你也可以使用其他的JSON库来完成相同的任务。

pscool的博客 2157

《MySQL 入门教程》第 03 篇 管理数据库

本篇主要介绍 MySQL 数据库的创建、查看、选择和删除操作,包括使用 mysql 命令行和 MySQL Workbench 图形工具两种方式。

Tony.Dong的专栏 3059

java的json解析工具_json文件解析工具类(java)

附上java解析json文件内容的工具类1.工具类import com.alibaba.fastjson.JSONObject;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.core.io.ClassPathResource;import java.io.*;/*** @Class...

weixin_42514627的博客 573

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

java解析JSON文件的方法

jsava解析JSON文件的方法 http://blog.sina.com.cn/s/blog_628cc2b70101dydc.html 一、首先需要在Eclipse工程中导入相关的jar包,jar包参见链接:http://download.csdn.net/detail/filywysss/4991496 二、提供一份待解析的json文件,apkinfo.json如下: [ {

choushiduheng的专栏 1044
上一篇: JavaWeb中图片和视频处理几种方式
下一篇: Linux部署JAVA环境
wo不吃洋葱
博客等级 码龄6年 19粉丝 33原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值