Java 将大JSON文件转换为XML
我正在尝试使用转换字符串的json.org库将json文件转换为xml。然而,我有一个大文件,我不能存储在缓存中,所以我想在转换时写入。有人知道我该怎么做吗 到目前为止:Java 将大JSON文件转换为XML,java,json,xml,string,buffer,Java,Json,Xml,String,Buffer,我正在尝试使用转换字符串的json.org库将json文件转换为xml。然而,我有一个大文件,我不能存储在缓存中,所以我想在转换时写入。有人知道我该怎么做吗 到目前为止: BufferedReader br = new BufferedReader(new FileReader(FILE_NAME)); private String line; while((line=br.readLine())!=null){ JSONObject json = new JSONObject(line
BufferedReader br = new BufferedReader(new FileReader(FILE_NAME));
private String line;
while((line=br.readLine())!=null){
JSONObject json = new JSONObject(line));
String xml = XML.toString(json);
// Write on OUTPUT_FILE_NAME
}
如果您没有绑定到
json.org
,您可以尝试在中使用和json-to-xml支持的低级别流
该文件是一个大json对象,还是一大堆小对象?一个大json文件(3gb)@ParrisVarney您可以删除第一个和最后一个花括号,将子对象逐个读取到内存中,构建xml,然后将所有内容粘贴到一起吗?@ParrisVarney,谢谢!实际上我该怎么做?这难道不能将所有数据存储在缓存中吗?我想你可以编写一个解析器,当它找到一个完整的子对象时,一个字节一个字节地读取你的文件,并写入几个小文件。您可以使用类似于对象层次结构的目录结构。
JsonFactory jf = new JsonFactory();
JsonParser jp = jf.createParser(...);
XmlFactory xf = new XmlFactory();
JsonGenerator xg = xf.createGenerator(...);
xg.writeFieldName("root"); // need a root element
JsonToken t = null;
while((t = jp.nextToken()) != null) {
switch(t) {
case START_OBJECT:
xg.writeStartObject();
break;
case END_OBJECT:
xg.writeEndObject();
break;
case START_ARRAY:
xg.writeStartArray();
break;
case END_ARRAY:
xg.writeEndArray();
break;
case FIELD_NAME:
xg.writeFieldName(jp.getCurrentName());
break;
case VALUE_STRING:
xg.writeString(jp.getText());
break;
case VALUE_FALSE:
xg.writeBoolean(false);
break;
case VALUE_TRUE:
xg.writeBoolean(true);
break;
// some tokens missing here
}
}