为了应付枯燥的工作需求,我造了一个“轮子”

项目代码已上传至Github,已开源,欢迎Star。
项目地址:JSON_EXTRACT_SQL

正如大家标题所见的,我造了一个“轮子”!!!
至于是什么需求呢?下面我贴出一段json

{
            "type": "test",
            "properties": {
                "id": "sdxzcg",
                "type": "polyline",
                "styleType": "polyline",
                "style": {
                    "color": "#ffff00",
                    "width": 3,
                    "clampToGround": true,
                    "materialType": "Color"
                }
            },
            "geometry": {
                "type": "Mytest",
                "coordinates": [
                    [
                        105.655425,
                        37.433664,
                        1162.4
                    ],
                    [
                        105.655627,
                        37.433482,
                        1162.8
                    ],
                    [
                        105.655789,
                        37.433317,
                        1163
                    ],
                    [
                        105.655829,
                        37.432957,
                        1162
                    ],
                    [
                        105.655856,
                        37.432303,
                        1162.3
                    ],
                    [
                        105.655875,
                        37.431726,
                        1165.3
                    ],
                    [
                        105.65565,
                        37.431341,
                        1166.4
                    ],
                    [
                        105.654665,
                        37.429694,
                        1163.1
                    ],
                    [
                        105.653992,
                        37.428462,
                        1180.9
                    ],
                    [
                        105.653546,
                        37.427658,
                        1188.6
                    ],
                    [
                        105.652917,
                        37.423421,
                        1192.3
                    ],
                    [
                        105.652501,
                        37.420775,
                        1201.1
                    ],
                    [
                        105.652439,
                        37.420558,
                        1201.5
                    ],
                  // 此处省略上千条数据。。。。
                ]
            }
        },

 不知道大家看到这段json代码的时候是什么感受,我反正是头晕眼花。到这里:那需求是什么呢????

需求:将这所有数组里边的三个数值都提取出来,写成SQL语句,插入数据库中。

当时拿到这个任务的时候,第一个想到办法的就是去网上搜现成的在线JSON网站。因为以前都是用这类网站来查看一些结构化的JSON数据,这次也就想在这些网站上面看看是否有满足我这个需求的功能。
  绕了了一大圈下来,发现都没有。。。。。有的无疑也就是一些根据JSON生成建表语句的一些功能,就像下边这种👇
在这里插入图片描述
找了小时一无所获之后,我想着使用JAVA去解析一下这个,根据现有的工具类像GsonFastJson这些去处理一下,毕竟让我手动改…那是不可能的,咱好歹也是一个程序员啊!!!

  最终为了尽快完成任务,我就根据给定的这个json结构,写了他对应的的这个解析代码,最终,很快啊,,就完成了整个任务。但很快下午又有了一个任务,猜猜是啥。。。没错啊,还是提取Json,也是上千条,还是量大管饱。
  这时可能大家都会想到复用原来的解析代码,我和大家一样,何尝不是呢!!但这次需要的是UPDATE,并且要在更新的字段后面加上一个新增标识。尽管最终也是完成了任务,但下班后我也是认真思考了这个问题,要是后面有此类的任务需求,我还得根据具体的JSON结构来写不同的解析代码吗?我能否做到一个通用的,可以从JSON代码中提取出我们需要的INSERT或者UPDATE语句的工具呢,,,功夫不负有心人啊!!最终我做出了一个小工具JSON_EXTRACT_SQL,它可以很快的提取出我们需要的值,目前支持INSERTUPDATE语句生成。

演示如下:

在这里插入图片描述

其他的一些细节功能的演示,这里不再演示,已将项目开源上传至Github,有什么问题可以提issue,或者私信我都可以


下边给出README.md文档内容:


功能

JSON提取数据生成INSERT语句

  • 示例:
{
  "employees": [
    {
      "firstName": "Bill",
      "lastName": "Gates"
    },
    {
      "firstName": "George",
      "lastName": "Bush"
    },
    {
      "firstName": "Thomas",
      "lastName": "Carter"
    }
  ]
}
[
  "INSERT INTO tableName(firstName, lastName) VALUES(Bill,Gates);",
  "INSERT INTO tableName(firstName, lastName) VALUES(George,Bush);",
  "INSERT INTO tableName(firstName, lastName) VALUES(Thomas,Carter);"
]

JSON提取数据生成UPDATE语句

  • 示例:
{
  "employees": [
    {
      "firstName": "Bill",
      "lastName": "Gates"
    },
    {
      "firstName": "George",
      "lastName": "Bush"
    },
    {
      "firstName": "Thomas",
      "lastName": "Carter"
    }
  ]
}
[
  "UPDATE tableName SET firstName = Bill, lastName = Gates WHERE`name`='张三' ;",
  "UPDATE tableName SET firstName = George, lastName = Bush WHERE`name`='张三' ;",
  "UPDATE tableName SET firstName = Thomas, lastName = Carter WHERE`name`='张三' ;"
]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JQwOQ6Cw-1691072614519)(image/img_7.png)]

参数列表:

  1. 表名称(必填):生成SQL语句的表名称
  2. key(必选):获取该key下的所有k-v
  3. removeKeys(可选):剔除对象key下不需要的k-v
  4. type(必选):SQL语句的类型(INSERT、UPDATE)
  5. 新增字段:
    • UPDATE:可以自定义语句,就是直接将语句拼接到生成的SQL语句后边
    • INSERT:格式必须是x=1,y=2这种形式
  6. attrList:
    • 可以替换key的值
    • 当获取的数据没有key的时候,必须指定(如下:)
{
  "coordinates": [
    106.049833,
    36.381263,
    1518.7
  ]
}
//这种情况必须指定attrList

其他的一些说明:

  1. 尽量保证提取对象每个结构都一致,以下是一些错误的示例。

    • 在这里插入图片描述

    • 出现字段名不统一的情况的时候,都是以第一个对象中的字段名为准。

    • 在这里插入图片描述

    • 同样的这种情况,也是以第一个对象字段数量为准

    • 在这里插入图片描述

    • 当需要提取的多个相同的key,结构不一致的时候,会以第一个为准,但此时数据对应也会出问题

    • 其余待补充。。。

  2. 目前只提供了生成INSERT语句和UPDATE语句两种功能,使用的需要注意:

    • 生成INSERT语句,新增字段格式必须是(x=1),多个新增字段必须使用,分隔。否则会报错:在这里插入图片描述

    • 生成UPDATE语句,可以自定义填写一些内容(结果最终是以拼接的方式返回);不会解析(x=1)这种格式。

  3. 可以使用replaceList来替换已有的字段。在这里插入图片描述

    • 不管ReplaceList中有多少个替换字段,都只会替换和原有字段数量相同的前几个
    • 替换的是,去除removeKeys之后的字段数量,如下:
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传在这里插入图片描述

如果文章中有描述不准确或者错误的地方,还望指正。您可以留言📫或者私信我。🙏
最后希望大家多多 关注+点赞+收藏^_^,你们的鼓励是我不断前进的动力!!!
感谢感谢~~~🙏🙏🙏</f

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艺术留白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值