我正在尝试将POJO的jackson JSON字符串转换为JSON文件以导入MySQL。
try {
//HtmlPage object contains the html code
HtmlPage page = client.getPage(baseUrl);
//System.out.println(page.asXml());
//Selecting nodes with xpath
List<HtmlElement> itemList = page.getByXPath("//tr[@class='athing']");
List<HackerNewsItem> fullList = new ArrayList<>();
if(itemList.isEmpty()) {
System.out.println("No item found");
}else {
for(HtmlElement htmlItem : itemList){
int position = Integer.parseInt(((HtmlElement) htmlItem.getFirstByXPath("./td/span")).asText().replace(".", ""));
int id = Integer.parseInt(htmlItem.getAttribute("id"));
String title = ((HtmlElement) htmlItem.getFirstByXPath("./td[not(@valign='top')][@class='title']")).asText();
String url = ((HtmlAnchor) htmlItem.getFirstByXPath("./td[not(@valign='top')][@class='title']/a")).getHrefAttribute();
String author = ((HtmlElement) htmlItem.getFirstByXPath("./following-sibling::tr/td[@class='subtext']/a[@class='hnuser']")).asText();
int score = Integer.parseInt(((HtmlElement) htmlItem.getFirstByXPath("./following-sibling::tr/td[@class='subtext']/span[@class='score']")).asText().replace(" points", ""));
HackerNewsItem hnItem = new HackerNewsItem(title, url, author, score, position, id);
ObjectMapper mapper = new ObjectMapper();
String jsonString = mapper.writeValueAsString(hnItem) ;
System.out.println(jsonString);
mapper.writeValue(Paths.get("hackernewsitem2.json").toFile(), fullList.add(hnItem));
}
}
}catch (Exception e) {
e.printStackTrace();
}
我遇到的问题是,即使我在控制台中返回了JSON字符串,并且。json文件创建后,MySQL workbench抛出一个未处理的错误异常:bool()类型的对象没有长度 作为一个json文件,行为“true”。
如果我做mapper.write值(Paths.get("hackernewsitem.json"). toFile(), hnItem);
文件被正确导入,但数据库中没有数据,如果被视为json,则只有一行。
我的POJO
@Getter@Setter@AllArgsConstructor
public class HackerNewsItem {
@JsonProperty("item_title")
private String title;
@JsonProperty("item_url")
private String url;
@JsonProperty("item_author")
private String author;
@JsonProperty("item_score")
private int score;
@JsonProperty("item_position")
private int position;
@JsonProperty("item_id")
private int id;
}
你想在for循环中填充列表吗?实际上,您已经在循环之前创建了完整列表,所以您只需要利用它。创建HackerNewsItem后,只需将其添加到列表中。
HackerNewsItem hnItem = new HackerNewsItem(...);
fullList.add(hnItem);
当for循环完成时,您的完整列表中有所有项目。
编辑:不要在循环中保存列表。这会给你带来奇怪的结果。因此,将ObjectMapper移到循环下方。这部分应该看起来像
ObjectMapper mapper = new ObjectMapper();
String jsonString = mapper.writeValueAsString(hnItem) ;
System.out.println(jsonString);
mapper.writeValue(Paths.get("hackernewsitems.json").toFile(), fullList);
请帮助我实现这一点。
问题内容: 我有四个foreach循环,这些循环遍历集合并根据条件进行操作。 这是我现在正在编写的代码: 主要对象(代码中的对象)来自第三方提供程序SDK,因此我无法在该部分上进行任何更改。我想问一下Stack Overflow社区是否有更好的方法来打破所有四个foreach循环。或者,如果还有其他方法可以重构此代码,使其更具可读性和可维护性。 问题答案: 在最外面的循环上使用标签,当您想跳出所有
foreach循环遍历列表值并将控制变量(var)依次设置为列表的每个元素 - 语法 (Syntax) Perl编程语言中foreach循环的语法是 - foreach var (list) { ... } 流程图 (Flow Diagram) 例子 (Example) #!/usr/local/bin/perl @list = (2, 20, 30, 40, 50); # foreach lo
本文向大家介绍如何在PowerShell foreach并行循环中使用PSCustomObject?,包括了如何在PowerShell foreach并行循环中使用PSCustomObject?的使用技巧和注意事项,需要的朋友参考一下 要在Foreach并行循环内使用PSCustomObject ,我们首先需要考虑如何在循环内使用变量。 因此,让我们看看是否可以在$out变量中存储或更改值。 示例
问题内容: 我想遍历一个数组,以检查是否存在一个值。如果该值确实存在,我想删除包含它的元素。 我有以下代码: 找到值后,我不知道如何删除该元素。如何删除? 我必须使用这个问题。可能有替代方法,欢迎您共享它们。 问题答案: 如果您还获得了密钥,则可以这样删除该项目:
除了前面介绍的几种循环语句外,C# 同样也支持 foreach 循环,使用 foreach 可以遍历数组或者集合对象中的每一个元素,其语法格式如下: foreach(数据类型 变量名 in 数组或集合对象){ 语句块; } foreach 会在每次循环的过程中,依次从数组或集合对象中取出一个新的元素放到 里定义的变量中,直到所有元素都成功取出后退出循环。 【示例】使用 foreach 循环