在Java中,将字符串转换为 List<ClassName>
通常涉及以下几个步骤:
ClassName
的实例。List<ClassName>
中。下面分别介绍使用JSON和CSV两种常见格式的转换方法。
List<ClassName>
如果你的字符串是JSON格式的数组,可以使用诸如Jackson或Gson等JSON库来解析。
示例:使用Jackson
假设你有以下类:
public class Person {
private String name;
private int age;
// 构造方法、getter和setter
}
以及一个JSON字符串:
[
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 25}
]
转换代码如下:
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.util.List;
public class JsonToListExample {
public static void main(String[] args) {
String jsonString = "[{\"name\":\"Alice\",\"age\":30}, {\"name\":\"Bob\",\"age\":25}]";
ObjectMapper objectMapper = new ObjectMapper();
try {
List<Person> personList = objectMapper.readValue(jsonString, new TypeReference<List<Person>>() {});
for (Person person : personList) {
System.out.println(person.getName() + ", " + person.getAge());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
示例:使用Gson
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.List;
public class GsonToListExample {
public static void main(String[] args) {
String jsonString = "[{\"name\":\"Alice\",\"age\":30}, {\"name\":\"Bob\",\"age\":25}]";
Gson gson = new Gson();
Type listType = new TypeToken<List<Person>>() {}.getType();
List<Person> personList = gson.fromJson(jsonString, listType);
for (Person person : personList) {
System.out.println(person.getName() + ", " + person.getAge());
}
}
}
List<ClassName>
如果你的字符串是以逗号分隔的值(CSV)格式,可以手动解析或使用第三方库如OpenCSV。
示例:手动解析
import java.util.ArrayList;
import java.util.List;
public class CsvToListExample {
public static void main(String[] args) {
String csvString = "Alice,30\nBob,25\nCharlie,28";
String[] lines = csvString.split("\n");
List<Person> personList = new ArrayList<>();
for (String line : lines) {
String[] parts = line.split(",");
if (parts.length == 2) {
Person person = new Person(parts[0], Integer.parseInt(parts[1]));
personList.add(person);
}
}
for (Person person : personList) {
System.out.println(person.getName() + ", " + person.getAge());
}
}
}
示例:使用OpenCSV
首先,添加OpenCSV依赖(如果使用Maven):
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.7.1</version>
</dependency>
然后,使用以下代码进行转换:
import com.opencsv.CSVReader;
import com.opencsv.bean.ColumnPositionMappingStrategy;
import com.opencsv.bean.CsvToBean;
import com.opencsv.bean.CsvToBeanBuilder;
import java.io.StringReader;
import java.util.List;
public class OpenCsvToListExample {
public static void main(String[] args) {
String csvString = "name,age\nAlice,30\nBob,25\nCharlie,28";
ColumnPositionMappingStrategy<Person> strategy = new ColumnPositionMappingStrategy<>();
strategy.setType(Person.class);
String[] columns = new String[]{"name", "age"};
strategy.setColumnMapping(columns);
CsvToBean<Person> csvToBean = new CsvToBeanBuilder<Person>(new StringReader(csvString))
.withMappingStrategy(strategy)
.withSkipLines(1) // 跳过表头
.withIgnoreLeadingWhiteSpace(true)
.build();
List<Person> personList = csvToBean.parse();
for (Person person : personList) {
System.out.println(person.getName() + ", " + person.getAge());
}
}
}
JsonParser
)以节省内存。通过以上方法,你可以根据字符串的具体格式选择合适的方式将其转换为 List<ClassName>
。
没有搜到相关的文章