要将JSON转换为CSV,可以使用Java中的Jackson库。以下是一个示例代码:
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class JsonToCsvConverter {
public static void main(String[] args) {
String jsonFilePath = "input.json";
String csvFilePath = "output.csv";
try {
// 创建JSON解析器
JsonParser jsonParser = new JsonFactory().createParser(new File(jsonFilePath));
// 创建CSV写入器
FileWriter csvWriter = new FileWriter(csvFilePath);
// 创建ObjectMapper以读取JSON对象
ObjectMapper objectMapper = new ObjectMapper();
// 写入CSV标题行
csvWriter.append("Name, Age, City\n");
// 循环解析JSON对象
while (jsonParser.nextToken() != JsonToken.END_ARRAY) {
// 使用ObjectMapper将JSON对象转换为Java对象
Person person = objectMapper.readValue(jsonParser, Person.class);
// 将Java对象的属性写入CSV行
csvWriter.append(person.getName())
.append(",")
.append(String.valueOf(person.getAge()))
.append(",")
.append(person.getCity())
.append("\n");
}
// 关闭CSV写入器
csvWriter.flush();
csvWriter.close();
System.out.println("JSON转换为CSV成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
class Person {
private String name;
private int age;
private String city;
// getter和setter方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
}
在上面的示例代码中,我们假设输入的JSON数据是一个包含多个Person对象的数组。代码首先创建一个JSON解析器来读取JSON文件。然后,使用ObjectMapper将JSON对象转换为Java对象(Person类)。最后,将Java对象的属性写入CSV文件。