解析json导出csv或者直接入库

java代码

java 复制代码
package org.example.demo.demos.web;

import org.json.JSONArray;
import org.json.JSONObject;

import java.io.*;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.nio.file.Files;
import java.nio.file.Paths;

public class JsonToCsvExporter {

    public static String readJsonFromFile(String filePath) throws IOException {
        return new String(Files.readAllBytes(Paths.get(filePath)));
    }
    public static void main(String[] args) {
        try {
            String jsonString = readJsonFromFile("D:\\wxfile\\WeChat Files\\wxid_apkc5xaef63v22\\FileStorage\\File\\2024-11\\320506.json");
            JSONObject jsonObject = new JSONObject(jsonString);
            JSONArray features = jsonObject.getJSONArray("features");

            //BufferedWriter writer = new BufferedWriter(new FileWriter("D:\\sql\\jiayou.csv"));
            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("D:\\sql\\jiayou6.csv"), "UTF-8"));

            // Write CSV header
            writer.write("province,city,country,name,code,centroid_lat,centroid_lon");
            writer.newLine();

            for (int i = 0; i < features.length(); i++) {
                JSONObject feature = features.getJSONObject(i);
                JSONObject properties = feature.getJSONObject("properties");
                JSONArray centroid = properties.getJSONArray("centroid");

                String province = properties.getString("province");
                String city = properties.getString("city");
                String country = properties.getString("country");
                String name = properties.getString("name");
                String code = properties.getString("code");
                // 使用BigDecimal处理精度
                Double centroidLat = centroid.getDouble(1);
                Double centroidLon = centroid.getDouble(0);
                JSONArray coordinates = feature.getJSONObject("geometry").getJSONArray("coordinates");



                // 使用引号包裹数值
                writer.write(String.format("%s,%s,%s,%s,%s,\"%s\",\"%s\",\"%s\"",
                        province, city, country, name, code, centroidLat+"\t", centroidLon, coordinates.toString()));
                writer.newLine();
            }

            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

json格式

json 复制代码
{
	"type": "FeatureCollection",
	"features": [{
			"type": "Feature",
			"geometry": {
				"type": "Polygon",
				"coordinates": [
					[
						[120.60007823970665, 31.31712313141799],
						[120.60079346065866, 31.319310309073238],
						[120.60063063950828, 31.320359162324976],
						[120.60007823970665, 31.31712313141799]
					]
				]
			},
			"properties": {
				"geom": "SRID=4326;M6028 31.314280)))",
				"province": "江苏省",
				"city": "苏州市",
				"country": "姑苏区",
				"name": "虎丘街道",
				"code": "320508022",
				"centroid": [120.58022070333683, 31.333360742651255]
			}
		},
		
		{
			"type": "Feature",
			"geometry": {
				"type": "Polygon",
				"coordinates": [
					[
						[120.64872047263296, 31.28158308108988],
						[120.64836632087228, 31.280224143708896],
						[120.64872047263296, 31.28158308108988]
					]
				]
			},
			"properties": {
				"geom": "SRID=4326;MULT1.27843)))",
				"province": "江苏省",
				"city": "苏州市",
				"country": "姑苏区",
				"name": "葑门街道",
				"code": "320508",
				"centroid": [120.64269225845081, 31.29180955836013]
			}
		}
	]
}
相关推荐
天天爱吃肉82184 分钟前
【跨界封神|周杰伦×王传福(陶晶莹主持):音乐创作与新能源NVH测试,底层逻辑竟完全同源!(新人必看入行指南)】
python·嵌入式硬件·算法·汽车
薛定谔的猫喵喵11 分钟前
基于PyQt5的视频答题竞赛系统设计与实现
开发语言·qt·音视频
岱宗夫up17 分钟前
Python 数据分析入门
开发语言·python·数据分析
码界筑梦坊18 分钟前
325-基于Python的校园卡消费行为数据可视化分析系统
开发语言·python·信息可视化·django·毕业设计
asheuojj21 分钟前
2026年GEO优化获客效果评估指南:如何精准衡量TOP5关
大数据·人工智能·python
多恩Stone22 分钟前
【RoPE】Flux 中的 Image Tokenization
开发语言·人工智能·python
李日灐24 分钟前
C++进阶必备:红黑树从 0 到 1: 手撕底层,带你搞懂平衡二叉树的平衡逻辑与黑高检验
开发语言·数据结构·c++·后端·面试·红黑树·自平衡二叉搜索树
Risehuxyc33 分钟前
备份三个PHP程序
android·开发语言·php
lly20240639 分钟前
PHP Error: 常见错误及其解决方法
开发语言
网安墨雨39 分钟前
Python自动化一------pytes与allure结合生成测试报告
开发语言·自动化测试·软件测试·python·职场和发展·自动化