gpt4 book ai didi

java - 如何修改一个大的 json 字符串?

转载 作者:搜寻专家 更新时间:2023-10-31 19:31:19 24 4
gpt4 key购买 nike

死寂!您在 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,...

所有自定义键(如轰炸、禁止/审查等)都有值,但它们只是旧值(如果你愿意,可以伪造)值。实际值保存在从 Excel 文档中提取的 .csv 文件中。

我例如有这个:

                            banned/censored     bombed   
Antigua and Barbuda 2 120
...

现在我想将这些值与 json 文件中的正确键匹配。有没有我可以使用的程序?另一种选择是 java 的 json 库,它以某种方式支持我想要的。我还没有找到一个简单的解决方案。该文档非常大 ~ 10MB,如果它有什么不同的话!

编辑:我用过QGIS操作 .shp 文件,因此也可以使用某种扩展名。

最佳答案

只需将 JSON 和 CSV 转换为完全有值(value)的 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;
}

您只需要自己添加/生成 getter 和 setter。然后,您将能够像下面这样在 JSON 和 Java 之间进行转换:

Data data = new Gson().fromJson(jsonString, Data.class);

要在 CSV 和 Java 对象之间进行转换,只需选择众多 CSV 解析器中的一个,例如 OpenCSV .您甚至可以在 BufferedReader 的帮助下自行开发。

最后,在更改表示 JSON 数据的 Java 对象后,您可以在 Gson 的帮助下将其转换回 JSON 字符串,如下所示:

String json = new Gson().toJson(data);

关于java - 如何修改一个大的 json 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3414021/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com