Java 如何修改大型json字符串?
死寂!你在Stackoverflow上不经常遇到这种情况。。。我已经加了一笔小赏金让事情顺利进行 我已经构建了一个json文档,其中包含关于各个国家的位置信息。我添加了一些自定义密钥。这是json文件的开头:Java 如何修改大型json字符串?,java,excel,json,csv,Java,Excel,Json,Csv,死寂!你在Stackoverflow上不经常遇到这种情况。。。我已经加了一笔小赏金让事情顺利进行 我已经构建了一个json文档,其中包含关于各个国家的位置信息。我添加了一些自定义密钥。这是json文件的开头: { "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": { "NAME": "Antigua and Barbuda",
{
"type": "FeatureCollection",
"features": [
{ "type": "Feature", "properties": {
"NAME": "Antigua and Barbuda",
"banned/censored": "AG",
"Bombed": 29,
"LON": -61.783000, "LAT": 17.078000 },
"geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -61.686668,...
所有自定义键(如bombed、banked/censtered等)都有值,但它们只是旧值(如果需要,则是假的)。实际值保存在从excel文档提取的.csv文件中
例如,有以下内容:
禁止/审查轰炸
安提瓜和巴布达2 120
...
现在我想将这些值与json文件中的正确键匹配。有没有我可以使用的程序?另一个选择是java的json库,它以某种方式支持我想要的东西。我还没有找到一个简单的解决办法。文档非常大~10MB,如果有什么区别的话
编辑:我曾经处理过.shp文件,因此某种扩展也可能有用。只要将JSON和CSV转换成一个完整的Java对象即可。通过这种方式,您可以根据自己的喜好编写任何Java逻辑,以根据一个或另一个更改Java对象。最后,将表示JSON数据的修改后的Java对象转换回JSON字符串 但是,JSON中有一个问题。
禁止/审查的
中的/
不是JSON字段名的有效字符,因此许多现有的JSON反序列化程序可能会遇到此问题。如果你解决了这个问题,那么你就可以使用其中的一个
我可以推荐使用,用于JSON和Java之间的转换。下面是一个基于JSON结构的启动示例(将禁止/审查
重命名为横幅审查
):
要在CSV和Java对象之间转换,只需从众多CSV解析器中选择一个,如。您甚至可以在BufferedReader
的帮助下自行开发
最后,在更改表示JSON数据的Java对象后,您可以在Gson的帮助下将其转换回JSON字符串,如下所示:
String json = new Gson().toJson(data);
虽然BalusC的回答告诉您如何在当前的设置中实现这一点,但我有一个更激进的建议:去掉JSON 根据idea,JSON不是用来存储数据的——它是用来作为“为人类可读数据交换设计的基于文本的轻量级开放标准”。即:
- 低流量(尽可能少的无意义数据)
- 可读
- 易于使用动态语言处理
另一方面,数据存储的要求远不止这些。这就是数据库存在的原因。因此,将存储移到数据库中。如果您不想要功能齐全的数据库,请使用诸如HSQLDB或JavaDB之类的工具。这是我希望避免的。不管怎样,我会试试看。谢谢一个支持我正在寻找的一些功能的程序。像是QGIS的扩展,或是任何类似魔法的东西。不管怎么说,你已经准备好了。这里你只处理“类型”:“多多边形”如果我们有一个GeoJson既有“类型”:“多多边形”又有“类型”:“多边形”呢?这是我评论的答案,你是对的。我自己也不喜欢JSON来存储数据。但是当我使用OpenLayers和.shp文件时,我认为它是最容易使用的格式,因为OpenLayers使用geojson,并且.shp文件可以通过gdal转换为geojson。
Data data = new Gson().fromJson(jsonString, Data.class);
String json = new Gson().toJson(data);