java如何实现抽取json文件指定字段值

目录
  • 使用场景
  • 抽取json指定字段值
    • json文件格式
    • 导入依赖
    • 代码实现
    • 完整代码
  • 把需要的数据整理到excel中

使用场景

我有一个5000条数据的json文件,每条数据包含地名、该地的经纬度等其他很多信息。现在想把地名和经纬度抽出来导入到数据库中。

navicat自带的导入json格式文件不好用,只能导入json文件中的外层数据,而我需要的地名和经纬度信息在json的内层。

抽取json指定字段值

json文件格式

{
	"type": "FeatureCollection",
	"features": [{
			"type": "Feature",
			"geometry": {
				"type": "Point",
				"coordinates": [117.135437, 39.22393]
			},
			"properties": {
				"type": 1,
				"OBJECTID": 9288,
				"CC": "1117",
				"GB": "310107",
				"NAME": "某某村",
				"PAC": "120104008006111",
				"ELEMSTIME": "20150630",
				"ELEMETIME": "",
				"AREACODE": 120000,
				"FEATID": 120000403,
				"ChangeType": 0,
				"ChangeAtt": ""
			}
		},
		{
			"type": "Feature",
			"geometry": {
				"type": "Point",
				"coordinates": [117.17052343, 39.124663697000074]
			},
			"properties": {
				"OBJECTID": 9289,
				"CC": "1117",
				"GB": "310107",
				"NAME": "某某社区",
				"PAC": "120104003014111",
				"ELEMSTIME": "20150630",
				"ELEMETIME": "",
				"AREACODE": 120000,
				"FEATID": 120000458,
				"ChangeType": 0,
				"ChangeAtt": ""
			}
		}
	]
}

导入依赖

在pom.xml文件里加上fastjson

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.9</version>
</dependency>

代码实现

读取本地json文件的方法

public static String readJsonFile(String fileName) {
    String jsonStr = "";
    try {
        File jsonFile = new File(fileName);
        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文件放在resourses下面(直接复制到resourses)

String path = ddem.class.getClassLoader().getResource("villagePoint.json").getPath();
String s = readJsonFile(path);
JSONObject jobj = JSON.parseObject(s);
JSONArray features = jobj.getJSONArray("features");//构建JSONArray数组
for (int i = 0; i < features.size(); i++) {
    JSONObject key = (JSONObject) features.get(i);
    JSONObject geometry =key.getJSONObject("geometry");
    JSONArray coordinates=geometry.getJSONArray("coordinates");
    BigDecimal jingdu = coordinates.getBigDecimal(0);
    BigDecimal weidu = coordinates.getBigDecimal(1);
    JSONObject properties=key.getJSONObject("properties");
    String name =(String)properties.getString("NAME");
//          System.out.println(jingdu);
//          System.out.println(weidu);
    System.out.println(name);
}

JSONObject或JSONArray可以get很多种类型,具体用哪个看你自己的json内容

完整代码

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.io.*;
import java.math.BigDecimal;
public class ddem {
    public static void main(String[] args) {
        String path = ddem.class.getClassLoader().getResource("villagePoint.json").getPath();
        String s = readJsonFile(path);
        JSONObject jobj = JSON.parseObject(s);
        JSONArray features = jobj.getJSONArray("features");//构建JSONArray数组
        for (int i = 0; i < features.size(); i++) {
            JSONObject key = (JSONObject) features.get(i);
            JSONObject geometry =key.getJSONObject("geometry");
            JSONArray coordinates=geometry.getJSONArray("coordinates");
            BigDecimal jingdu = coordinates.getBigDecimal(0);
            BigDecimal weidu = coordinates.getBigDecimal(1);
            JSONObject properties=key.getJSONObject("properties");
            String name =(String)properties.getString("NAME");
//          System.out.println(jingdu);
//          System.out.println(weidu);
            System.out.println(name);
        }
    }
    //读取json文件
    public static String readJsonFile(String fileName) {
        String jsonStr = "";
        try {
            File jsonFile = new File(fileName);
            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;
        }
    }
}

把需要的数据整理到excel中

如上例所示,我需要地名和经纬度,可以一次性查出三列数据,但是为了复制到excel比较方便,我选择一个一个查出来,逐个复制到excel中,再为每列起个列名,就能非常方便地使用navicat的”导入xls“功能导入大量数据啦~

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • java比较两个json文件的差异及说明

    目录 比较两个json文件的差异 推荐java目前比较常用的4个json库 一.什么是JSON? 二.常用的四种JSON库 比较两个json文件的差异 其实是以第一个json文件为准,查看第二个对比第一个的差异. //排序 public static JSONArray sortJsonArray(JSONArray array) { List<Object> list = array.toJavaList(Object.class); list.sort(Comparator.compari

  • Java读取本地json文件及相应处理方法

    如下所示: //读取json文件地址 /* String path = getClass().getClassLoader().getResource("menu.json").toString(); path = path.replace("\\", "/"); if (path.contains(":")) { path = path.replace("file:/", ""); }

  • java的url方式、本地方式获取json文件内容

    因为工作原因需要读取json文件,最先是使用url方式不符合要求pass.又使用本地方式读取.记录一下方便后期查看. 注:因为资料都是从网上摘抄,如有问题请告知我. 1.url方式 /** * 通过网络访问json并读取文件 * @param url:http://127.0.0.1:80/dashboard/dept_uuid.json * @return:json文件的内容 */ public static String loadJson (String url) { StringBuild

  • 解决JavaWeb读取本地json文件以及乱码的问题

    最近在开发项目的时候遇到一个问题,在myecilpes上使用googlede gson读取项目中的json文件成功,然后把项目发布到tomcat上再使用同样的方法,会提示"系统找不到指定的路径" 文件放在src/config/下 JsonParser parser = new JsonParser(); JsonObject object = (JsonObject) parser.parse(new FileReader("config/Test.json"));

  • JAVA 格式化JSON数据并保存到json文件中的实例

    使用fastjson格式化json数据并保存到文件 /** * 将JSON数据格式化并保存到文件中 * @param jsonData 需要输出的json数 * @param filePath 输出的文件地址 * @return */ public static boolean createJsonFile(Object jsonData, String filePath) { String content = JSON.toJSONString(jsonData, SerializerFeat

  • 利用java读取web项目中json文件为map集合方法示例

    前言 本文主要介绍了关于java读取web项目中json文件为map集合的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 实例介绍 假设当前项目web目录(/resource/test.json)下有一json文件如下: [ { "path": "content_111", "title": "文章1", "imgUrl": "../../../libs/img/ppt

  • Java读取项目json文件并转为JSON对象的操作

    Java读取项目json文件并转为JSON对象 1.创建json文件(demo.json) { "button": [ { "type": "click", "name": "今日歌曲", "key": "V1001_TODAY_MUSIC" }, { "name": "菜单", "sub_button":

  • java如何实现抽取json文件指定字段值

    目录 使用场景 抽取json指定字段值 json文件格式 导入依赖 代码实现 完整代码 把需要的数据整理到excel中 使用场景 我有一个5000条数据的json文件,每条数据包含地名.该地的经纬度等其他很多信息.现在想把地名和经纬度抽出来导入到数据库中. navicat自带的导入json格式文件不好用,只能导入json文件中的外层数据,而我需要的地名和经纬度信息在json的内层. 抽取json指定字段值 json文件格式 { "type": "FeatureCollecti

  • JS使用ajax方法获取指定url的head信息中指定字段值的方法

    本文实例讲述了JS使用ajax方法获取指定url的head信息中指定字段值的方法.分享给大家供大家参考.具体分析如下: 下面的JS代码用来获取ajax_info.txt的head信息中的Last modified属性,最后修改时间 <!DOCTYPE html> <html> <head> <script> function loadXMLDoc(url) { var xmlhttp; if (window.XMLHttpRequest) {// code

  • Java使用application.property读取文件里面的值

    自定义工具类PropertyUtil,并在该类的static静态代码块中读取properties文件内容保存在static属性中以供别的程序使用 package com.hafiz.www.util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.*; import java.util.Properties; /** * Desc:properties文件获取工具类 * Created by haf

  • Python实现的读写json文件功能示例

    本文实例讲述了Python实现的读写json文件功能.分享给大家供大家参考,具体如下: 相比java,python对json文件的处理就简单很多.java操作json文件的话需要引用jar包及相关依赖包,想用java操作json的同学可以去百度,这里就不赘述了. 首先说读json文件 在进行json操作之前,首先要了解json的格式,分辨json文件. json文件格式一般有两种: 第一种:每行一个json类似于以下这种形式: ["name":"Tony",&quo

  • 如何利用JAVA正则表达式轻松替换JSON中的大字段

    (一)背景 在软件开发工作中我们经常用JSON来传输数据,根据业务需要不免会在JSON数据中传输比较大的数据,有时传输一个图片数据会达到几百K或者几M,而这些大字段数据在记录日志时,不论是文件日志还是数据库日志,都会造成大量的IO处理,使接口的响应速度大幅下降,同时会增加服务的负载,降低系统的性能.这时我们可以选择不输出这个JSON数据,但往往这样会造成更大的问题,因此我们会想如果只不输出大字段数据,而其他数据正常输出就好了,但从技术上往往不易实现.本文就是给大家提供一种方法,利用JAVA的正则

  • Java Struts图片上传至指定文件夹并显示图片功能

    继上一次利用Servlet实现图片上传,这次利用基于MVC的Struts框架,封装了Servlet并简化了JSP页面跳转. JSP上传页面 上传一定要为form加上enctype="multipart/form-data",表示提交的数据时二进制的 并且必须是method="post" <%@ page language="java" contentType="text/html; charset=utf-8" page

  • Spring Boot 从静态json文件中读取数据所需字段

    •在实体中,通常使用类似字典表的文件来表示属性,文件大都配置在配置文件中,也可以是静态文件,本次记录如何从静态json文件中读取所需字段. 1.文件格式以及路径 2.加载文件 import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.Resource; @Value("classpath:static/data/area.json") private Res

  • nodejs require js文件入口,在package.json中指定默认入口main方法

    我们都知道nodejs遵循commonJS规范,各个js是独立的. 如果目录结构是: –config 文件夹 – index.js – test.js app.js 那么在app.js中require('./config')的时候,默认是index.js. 如何修改默认的config的入口? 只需要在config中添加package.json配置文件,在这个文件中进行指定默认的入口 { "name":"配置文件", "description":&

随机推荐