我目前有一堆 XML 文件(每个大小为 16kb)需要转换为 JSON,然后写入新文件。我有一个有效的实现,但速度非常慢。
我正在做的是抓取目录中的每个文件,将 XML 数据转换为字符串,使用 org.json 创建该字符串的 JSON 对象,然后使用 FileWriter 将其写入文件
import org.json.JSONObject;
import org.json.XML;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import org.apache.commons.io.FilenameUtils;
public class TestConvert {
public static void main(String[] args) {
final File xmlFolder = new File("C:\\files\\xml_files");
final File jsonFolder = new File("C:\\files\\json_files");
for(File fileEntry: xmlFolder.listFiles()){
try {
String xml = new String(Files.readAllBytes(fileEntry.toPath()), StandardCharsets.UTF_8);
JSONObject obj = XML.toJSONObject(xml);
String completeDir = jsonFolder + "\\" + FilenameUtils.removeExtension(fileEntry.getName()) + ".json";
FileWriter file = new FileWriter(completeDir);
obj.write(file);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
这确实有效,但是我目前正在使用大约 370k XML 文件对其进行测试,并且运行时间略超过 45 分钟。这似乎有点过分,我真的很想缩短完成此任务所需的时间。
最佳答案
您可以使用这个:https://github.com/stleary/JSON-java
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180813</version>
</dependency>
和 Java 文件:
import org.json.JSONObject;
import org.json.XML;
public class Main {
public static int PRETTY_PRINT_INDENT_FACTOR = 4;
public static String TEST_XML_STRING =
"<?xml version=\"1.0\" ?><test attrib=\"moretest\">Turn this to JSON</test>";
public static void main(String[] args) {
try {
JSONObject xmlJSONObj = XML.toJSONObject(TEST_XML_STRING);
String jsonPrettyPrintString = xmlJSONObj.toString(PRETTY_PRINT_INDENT_FACTOR);
System.out.println(jsonPrettyPrintString);
} catch (JSONException je) {
System.out.println(je.toString());
}
}
}
关于java - 在 Java 中将 XML 文件转换为 JSON 文件的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56585760/