如何修改大型json字符串?

Fre*_*old 5 java csv excel json

死一般的寂静!你经常在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,...
Run Code Online (Sandbox Code Playgroud)

所有自定义键(如被轰炸,禁止/审查等)都有值,但它们只是旧的(假如你想要的话)值.实际值保存在从Excel文档中提取的.csv文件中.

我有这个:

                            banned/censored     bombed   
Antigua and Barbuda              2                 120
...
Run Code Online (Sandbox Code Playgroud)

现在我想将这些值与json文件中的正确键匹配.有没有我可以使用的程序?另一种选择是java的json库,它以某种方式支持我想要的东西.我还没有找到一个简单的解决方案.该文件相当大~10MB,如果它有任何区别!

编辑:我已经使用QGIS来操作.shp文件,所以某种扩展也可以使用.

Bal*_*usC 7

只需将JSON和CSV转换为完全可用的Java对象即可.通过这种方式,您可以根据自己的喜好编写任何Java逻辑,以根据一个或另一个更改Java对象.最后,将表示JSON数据的已修改Java对象转换回JSON字符串.

但是你的JSON有一个问题.该/banned/censored不是一个JSON字段名称中的有效字符,所以许多现有的JSON解串器的可窒息此.如果您解决了这个问题,那么您将能够使用其中一个.

我建议使用Google Gson进行JSON和Java之间的转换.这是基于您的JSON结构(banned/censored重命名为bannedOrCensored)的启动示例:

class Data {
    private String type;
    private List<Feature> features;
}

class Feature {
    private String type;
    private Properties properties;
    private Geometry geometry;
}

class Properties {
    private String NAME;
    private String bannedOrCensored;
    private Integer Bombed;
    private Double LON;
    private Double LAT;
}

class Geometry {
    private String type;
    private Double[][][][] coordinates;
}
Run Code Online (Sandbox Code Playgroud)

您只需自己添加/生成getter和setter.然后,您将能够在JSON和Java之间进行转换,如下所示:

Data data = new Gson().fromJson(jsonString, Data.class);
Run Code Online (Sandbox Code Playgroud)

要在CSV和Java对象之间进行转换,只需选择许多CSV解析器中的一个,如OpenCSV.你甚至可以在自己的帮助下自己生产BufferedReader.

最后,改变代表JSON数据的Java对象后,你可以用GSON的帮助如下转换回JSON字符串:

String json = new Gson().toJson(data);
Run Code Online (Sandbox Code Playgroud)

  • 一个程序,它支持我正在寻找的一些功能.就像QGIS的扩展,或者其他 - 像魔术一样.无论如何,你有事情要做. (2认同)