, JSON - . - (, JSON , - ). , - . , :
1) FasterXML/Jackson ( ). , , - -, +, unicode .
2) Google/Gson JsonReader, JSON -. nextString (https://github.com/google/gson/blob/master/gson/src/main/java/com/google/gson/stream/JsonReader.java#L816). , JSON ( : https://github.com/google/gson/blob/master/gson/src/main/java/com/google/gson/stream/JsonReader.java#L1317-L1323).
3) fangyidong/Json-simple SAX- push-. : https://github.com/fangyidong/json-simple/blob/master/src/main/java/org/json/simple/parser/ContentHandler.java#L108
4) beckchr/StAXON. JSON XML, XMLStreamReader. , : http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/javax/xml/stream/XMLStreamReader.java#XMLStreamReader.getTextCharacters%28int%2Cchar%5B%5D%2Cint%2Cint%29. , , OutOfMemoryError JSON . :
private static void useStaxon(File tempJson) throws Exception {
XMLInputFactory factory = new JsonXMLInputFactory();
XMLStreamReader reader = factory.createXMLStreamReader(new FileReader(tempJson));
while (true) {
if (reader.getEventType() == XMLStreamConstants.END_DOCUMENT)
break;
if (reader.isCharacters()) {
long len = reader.getTextLength();
String text;
if (len > 20) {
char[] buffer = new char[20];
reader.getTextCharacters(0, buffer, 0, buffer.length);
text = new String(buffer) + "...";
} else {
text = reader.getText();
}
System.out.println("String: " + text + " (length=" + len + ")");
}
reader.next();
}
reader.close();
}
:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at de.odysseus.staxon.json.stream.impl.Yylex.zzRefill(Yylex.java:346)
at de.odysseus.staxon.json.stream.impl.Yylex.yylex(Yylex.java:600)
at de.odysseus.staxon.json.stream.impl.Yylex.nextSymbol(Yylex.java:271)
at de.odysseus.staxon.json.stream.impl.JsonStreamSourceImpl.next(JsonStreamSourceImpl.java:120)
at de.odysseus.staxon.json.stream.impl.JsonStreamSourceImpl.peek(JsonStreamSourceImpl.java:250)
at de.odysseus.staxon.json.JsonXMLStreamReader.consume(JsonXMLStreamReader.java:150)
at de.odysseus.staxon.json.JsonXMLStreamReader.consume(JsonXMLStreamReader.java:153)
at de.odysseus.staxon.json.JsonXMLStreamReader.consume(JsonXMLStreamReader.java:183)
at de.odysseus.staxon.json.JsonXMLStreamReader.consume(JsonXMLStreamReader.java:153)
at de.odysseus.staxon.json.JsonXMLStreamReader.consume(JsonXMLStreamReader.java:183)
at de.odysseus.staxon.base.AbstractXMLStreamReader.initialize(AbstractXMLStreamReader.java:216)
at de.odysseus.staxon.json.JsonXMLStreamReader.initialize(JsonXMLStreamReader.java:87)
at de.odysseus.staxon.json.JsonXMLStreamReader.<init>(JsonXMLStreamReader.java:78)
at de.odysseus.staxon.json.JsonXMLInputFactory.createXMLStreamReader(JsonXMLInputFactory.java:150)
at de.odysseus.staxon.json.JsonXMLInputFactory.createXMLStreamReader(JsonXMLInputFactory.java:45)
at test20150911.LongStringJsonTest.useStaxon(LongStringJsonTest.java:40)
at test20150911.LongStringJsonTest.main(LongStringJsonTest.java:35)
5) - - , C, JSON BSON. BSON . : https://github.com/dwight/bsontools. , "fromjson" 1 Gb JSON , ( ), - 10 . , 10 1 , ? ( : java ).
, : (1) , , , (2) FasterXML/Jackson, , Java, .