我需要将http响应转换为Model,并且响应为纯csv格式:
try {
StringReader stringReader = new StringReader(string);
CSVReader csvReader = new CSVReaderBuilder(stringReader).build();
CsvToBean<SampleModel> csvToBean = new CsvToBeanBuilder<SampleModel>(csvReader)
.withType(SampleModel.class)
.withIgnoreLeadingWhiteSpace(true)
.build();
arrayList =(ArrayList<SampleModel>)csvToBean.parse();
} catch (Exception e) {
System.out.println(e.getMessage());
}
这让我感到异常:
捕获CSV标头时出错!
该字符串如下所示:
Name, Date
Alex, 2012-10-30
Borhan, 2012-11-05
我一直在这里关注以下工作:https :
//sourceforge.net/p/opencsv/bugs/196/#ee18
如果您有一个或多个带有参数的构造函数,请在bean类中显式创建一个无参数的构造函数。如果您没有一个或多个带参数的构造函数,则无需显式创建无参数构造函数。
SampleModel.java:
import com.opencsv.bean.CsvBindByName;
public class SampleModel {
@CsvBindByName(column = "Name")
private String name;
@CsvBindByName(column = "Date")
private String date;
public SampleModel() {
// Empty
}
public SampleModel(String name, String date) {
this.name = name;
this.date = date;
}
public void setName(String name) {
this.name = name;
}
public void setDate(String date) {
this.date = date;
}
@Override
public String toString() {
return "{" + name + ", " + date + "}";
}
}
如您所见,我有一个两个参数的构造函数,因此需要显式提供一个无参数的构造函数。如果删除no-
arg构造函数并运行Main.java
(如下所述),它将在运行时失败。
但是,bean的以下定义不需要显式的无参数构造函数。您可以通过Main.java
使用此定义再次运行来验证它。
import com.opencsv.bean.CsvBindByName;
public class SampleModel {
@CsvBindByName(column = "Name")
private String name;
@CsvBindByName(column = "Date")
private String date;
public void setName(String name) {
this.name = name;
}
public void setDate(String date) {
this.date = date;
}
@Override
public String toString() {
return "{" + name + ", " + date + "}";
}
}
Main.java:
import java.io.StringReader;
import java.util.List;
import com.opencsv.CSVReader;
import com.opencsv.CSVReaderBuilder;
import com.opencsv.bean.CsvToBeanBuilder;
public class Main {
public static void main(String[] args) {
String string = "Name, Date\n" +
"Alex, 2012-10-30\n" +
"Borhan, 2012-11-05";
try {
StringReader stringReader = new StringReader(string);
CSVReader csvReader = new CSVReaderBuilder(stringReader).build();
List<SampleModel> arrayList= new CsvToBeanBuilder<SampleModel>(csvReader)
.withType(SampleModel.class)
.withIgnoreLeadingWhiteSpace(true)
.withSkipLines(1)// Skip the header line
.build()
.parse();
System.out.println(arrayList);
} catch (Exception e) {
e.printStackTrace();
}
}
}
输出:
[{Alex, 2012-10-30}, {Borhan, 2012-11-05}]
一种解决方法是从您从CSV读取的每个记录中创建bean的实例,并将该实例添加到List
,如下所示:
List<SampleModel> arrayList = new ArrayList<>();
String[] nextRecord;
CSVReader csvReader = new CSVReaderBuilder(stringReader)
.withSkipLines(1)// Skip the header line
.build();
while ((nextRecord = csvReader.readNext()) != null) {
arrayList.add(new SampleModel(nextRecord[0], nextRecord[1]));
}
问题内容: 我有以下字符串: 如何使用Google / GSON将其转换为Java POJO? 问题答案: 通过使用http://www.jsonschema2pojo.org/或通过在Studio中添加插件(https://github.com/Hexara/Json2Pojo)生成POJO 现在添加依赖项: 将您的json或字符串转换为POJO
我只是无法在c中转换不同的数据类型,我知道c是一种强类型语言,所以我在这里使用了,但我面临一个问题,错误消息是 从“std::string{aka std::basic_string}类型转换为“int”类型的static_
我想将以下字符串转换为对象: 要将其转换为对象,我创建了以下类: 我使用Jackson库转换到。以下是我如何使用杰克逊转换: 问题是,在转换上面的中User对象始终是空的。我做错了什么? 提前谢谢。
问题内容: 我的JSF页面中有p:selectOneMenu,当我运行JSF页面时,我从Converter类收到以下异常。 我该如何解决这个问题? 我在实体类中有以下内容 EmployeeConverter类 并在jsf页面中 更新1 修改的转换器方法 更新2 问题答案: 用您的方法,您无法达到自己的价值。在这里,您将收到,因此您必须将其转换为(可能必须实现使用Service locator 加载
问题内容: 问题:转弯 进入 Perl支持可以在替换字符串中使用的“ \ L”操作。 模式类不支持此操作: 此类不支持的Perl构造:[…]预处理操作\ l \ u,\ L和\ U。 https://docs.oracle.com/javase/10/docs/api/java/util/regex/Pattern.html 问题答案: 您无法在Java正则表达式中执行此操作。您必须使用和手动进行
所以,基本上。我不想知道是否有可能(如果有可能,如何),实际上把一个类在C#代码中直接转换成一个字符串?因此,基本上,该类中的所有内容都进入字符串。 这有点短,但我不知道怎么说得更清楚。