Converting big JSON-file to XML

时间:2015-11-12 11:53:28

标签: java json xml string buffer

I'm trying to convert a json-file to xml using json.org library which converts strings. However I've a big file that I can't store in cache so I want to write as I convert. Anyone have any ideas of how I should go about?

So far:

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
}

1 个答案:

答案 0 :(得分:1)

如果您不依赖于json.org,您可以随时使用Jacksonjackson-dataformat-xml中的json到xml支持来尝试低级别流媒体。

    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
        }
    }