Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何修改大型json字符串?_Java_Excel_Json_Csv - Fatal编程技术网

Java 如何修改大型json字符串?

Java 如何修改大型json字符串?,java,excel,json,csv,Java,Excel,Json,Csv,死寂!你在Stackoverflow上不经常遇到这种情况。。。我已经加了一笔小赏金让事情顺利进行 我已经构建了一个json文档,其中包含关于各个国家的位置信息。我添加了一些自定义密钥。这是json文件的开头: { "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": { "NAME": "Antigua and Barbuda",

死寂!你在Stackoverflow上不经常遇到这种情况。。。我已经加了一笔小赏金让事情顺利进行

我已经构建了一个json文档,其中包含关于各个国家的位置信息。我添加了一些自定义密钥。这是json文件的开头:

{
    "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);