从Java中的结构化原始文件创建json文件的最简单方法?
示例文件从Java中的结构化原始文件创建json文件的最简单方法?,java,regex,json,split,Java,Regex,Json,Split,示例文件 x1 x2 y1 y2 12 20 30 40 13 14 15 16 我想用它创建一个json结构,就像这样 { "coordinates" : [ {"x1" : 12 , "x2" : 20 , "y1":30 , "y2":40}, {"x1" : 13 , "x2" : 14 , "y1":15 , "y2":16}, ] } 默认的解决方案是拆分和合并原始文件。不幸的是,结构化数据不是100%干净的,有时值中也存在不规则的空间
x1 x2 y1 y2
12 20 30 40
13 14 15 16
我想用它创建一个json结构,就像这样
{ "coordinates" :
[
{"x1" : 12 , "x2" : 20 , "y1":30 , "y2":40},
{"x1" : 13 , "x2" : 14 , "y1":15 , "y2":16},
]
}
默认的解决方案是拆分和合并原始文件。不幸的是,结构化数据不是100%干净的,有时值中也存在不规则的空间。处理这种转换的最干净的方法是什么,任何轻量级JAVA库都能做到这一点 只需创建一些复制JSON字符串的POJO类,并使用GSON或Jackson库将其转换为JSON字符串 只需逐行读取文件,获取坐标并填充下面POJO类的对象 示例代码:
class Coordinates {
private ArrayList<XY> coordinates;
// getter & setter
}
class XY {
private int x1, x2, y1, y2;
public XY(int x1, int x2, int y1, int y2) {
this.x1 = x1;
this.x2 = x2;
this.y1 = y1;
this.y2 = y2;
}
// getter & setter
}
Coordinates coordinates = new Coordinates();
ArrayList<XY> list = new ArrayList<XY>();
list.add(new XY(12, 20, 30, 40));
list.add(new XY(13, 14, 15, 16));
coordinates.setCoordinates(list);
输出:
{
"coordinates": [
{
"x1": 12,
"x2": 20,
"y1": 30,
"y2": 40
},
{
"x1": 13,
"x2": 14,
"y1": 15,
"y2": 16
}
]
}
正则表达式不是此任务的合适工具。您可能想编写一个小解析器(如果还没有可用的解析器),如果输入不干净,那么GIGO应用-垃圾输入,垃圾输出。无论最终的输出结果是什么,都必须确保输入是干净的,这意味着使用自己的解析器将输入分解为易于json编码的内容。您对json解析库感兴趣吗?是的,最终,对于JSON解析,我必须使用JSON库,如JacksonAre键的名称dynamic?正如您所说,我可以让它工作,只是我必须使POJO的字段公开,或者我想必须配置具有可见性的字段。您正在Java世界中工作。遵循面向对象的原则。这打破了安全<代码>公共变量可以以不受控制的方式从任何位置访问。保持它的私有性,并使用适当的getter/setter方法。谢谢你的建议。
System.out.println(new ObjectMapper().writeValueAsString(coordinates));
{
"coordinates": [
{
"x1": 12,
"x2": 20,
"y1": 30,
"y2": 40
},
{
"x1": 13,
"x2": 14,
"y1": 15,
"y2": 16
}
]
}