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文件,所以某种扩展也可以使用.
只需将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)
| 归档时间: |
|
| 查看次数: |
3492 次 |
| 最近记录: |