Java 将从页面提取的数据写入Json文件

Java 将从页面提取的数据写入Json文件,java,json,parsing,Java,Json,Parsing,我正在从页面上的表中提取数据 我可以完美地提取数据,但我不知道如何以下面的格式写入Json 用于数据提取的Selenium代码: 最简单的方法可能是使用这些属性定义一个类indice etc,并在解析数据行时创建添加到列表中的实例,然后只需使用Gson或Jackson将对象列表转换为JSON,例如,最简单的方法可能是定义一个具有这些属性的类indice等,并在解析数据行时创建添加到列表中的实例,然后只需使用Gson或Jackson将对象列表转换为JSON,例如将对象映射到Java对象,那么克里斯

我正在从页面上的表中提取数据

我可以完美地提取数据,但我不知道如何以下面的格式写入Json

用于数据提取的Selenium代码:


最简单的方法可能是使用这些属性定义一个类indice etc,并在解析数据行时创建添加到列表中的实例,然后只需使用Gson或Jackson将对象列表转换为JSON,例如,最简单的方法可能是定义一个具有这些属性的类indice等,并在解析数据行时创建添加到列表中的实例,然后只需使用Gson或Jackson将对象列表转换为JSON,例如将对象映射到Java对象,那么克里斯提到的使用杰克逊可能是最好的选择。我举了一个例子,说明你可以做什么:

以下是可以保存您的值的Java对象:

public class TableElement {
    private String indice;
    private String ultimo;
    private String maxima;
    private String minima;
    private String variacao;
    private String variacao2;
    private String hora;

    public String getIndice() {
        return indice;
    }

    public void setIndice(String indice) {
        this.indice = indice;
    }

    // Add all getters and setters ...
}
注意-需要getter和setter,因为jackson使用getter和setter从json检索/设置对象的值

实际上,将其映射到json将如下所示:

StockTable stockTable = new StockTable();
List<TableElement> stocks = new ArrayList<>();

TableElement tableElement = new TableElement();
tableElement.setIndice("Dow 30");
tableElement.setUltimo("23.185,62");
tableElement.setMaxima("23.189,76");
tableElement.setMinima("21.285,37");
tableElement.setVariacao("+1.985,00");
tableElement.setVariacao2("+9,36%");
tableElement.setHora("13/03");

TableElement tableElement2 = new TableElement();
tableElement2.setIndice("S&P 500 VIX");
tableElement2.setUltimo("23.185,62");
tableElement2.setMaxima("23.189,76");
tableElement2.setMinima("21.285,37");
tableElement2.setVariacao("+1.985,00");
tableElement2.setVariacao2("+9,36%");
tableElement2.setHora("13/03");

stocks.add(tableElement);
stocks.add(tableElement2);

ObjectMapper objectMapper = new ObjectMapper();

try {
    System.out.println(objectMapper.writerWithDefaultPrettyPrinter()
                                       .writeValueAsString(stocks));
} catch (JsonProcessingException e) {
    e.printStackTrace();
}
[ {
  "indice" : "Dow 30",
  "ultimo" : "23.185,62",
  "maxima" : "23.189,76",
  "minima" : "21.285,37",
  "variacao" : "+1.985,00",
  "variacao2" : "+9,36%",
  "hora" : "13/03"
}, {
  "indice" : "S&P 500 VIX",
  "ultimo" : "23.185,62",
  "maxima" : "23.189,76",
  "minima" : "21.285,37",
  "variacao" : "+1.985,00",
  "variacao2" : "+9,36%",
  "hora" : "13/03"
} ]

将对象映射到Java对象,然后使用Chris提到的Jackson可能是最好的选择。我举了一个例子,说明你可以做什么:

以下是可以保存您的值的Java对象:

public class TableElement {
    private String indice;
    private String ultimo;
    private String maxima;
    private String minima;
    private String variacao;
    private String variacao2;
    private String hora;

    public String getIndice() {
        return indice;
    }

    public void setIndice(String indice) {
        this.indice = indice;
    }

    // Add all getters and setters ...
}
注意-需要getter和setter,因为jackson使用getter和setter从json检索/设置对象的值

实际上,将其映射到json将如下所示:

StockTable stockTable = new StockTable();
List<TableElement> stocks = new ArrayList<>();

TableElement tableElement = new TableElement();
tableElement.setIndice("Dow 30");
tableElement.setUltimo("23.185,62");
tableElement.setMaxima("23.189,76");
tableElement.setMinima("21.285,37");
tableElement.setVariacao("+1.985,00");
tableElement.setVariacao2("+9,36%");
tableElement.setHora("13/03");

TableElement tableElement2 = new TableElement();
tableElement2.setIndice("S&P 500 VIX");
tableElement2.setUltimo("23.185,62");
tableElement2.setMaxima("23.189,76");
tableElement2.setMinima("21.285,37");
tableElement2.setVariacao("+1.985,00");
tableElement2.setVariacao2("+9,36%");
tableElement2.setHora("13/03");

stocks.add(tableElement);
stocks.add(tableElement2);

ObjectMapper objectMapper = new ObjectMapper();

try {
    System.out.println(objectMapper.writerWithDefaultPrettyPrinter()
                                       .writeValueAsString(stocks));
} catch (JsonProcessingException e) {
    e.printStackTrace();
}
[ {
  "indice" : "Dow 30",
  "ultimo" : "23.185,62",
  "maxima" : "23.189,76",
  "minima" : "21.285,37",
  "variacao" : "+1.985,00",
  "variacao2" : "+9,36%",
  "hora" : "13/03"
}, {
  "indice" : "S&P 500 VIX",
  "ultimo" : "23.185,62",
  "maxima" : "23.189,76",
  "minima" : "21.285,37",
  "variacao" : "+1.985,00",
  "variacao2" : "+9,36%",
  "hora" : "13/03"
} ]

假设您可以将这些属性有效地烘焙到代码中。如果您需要基于页面上的表标题的更具动态性的内容,那将是另一回事——如果您可以将这些属性有效地烘焙到代码中,请让我们知道是否是这样。如果您需要基于页面上的表标题的更具动态性的内容,那将是另一回事-如果是这样,请告诉我们