从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
    }
  ]
}