2012-04-04 12 views
0

Ich verwende JSON-RPC. Wenn ich eine Anfrage an den Server sende, erhalte ich eine Antwort vom Server, die fast 2MB lang ist. In den Daten ist kein neues Zeilenzeichen enthalten. Wie wir wissen, ist es nicht möglich, alle 2MB Daten in einem String zu speichern, ich musste die Daten in eine Datei schreiben. DieseSo suchen Sie den Inhalt der Datei und lesen nur einen Teil der Datei

ist, was meine Datei wie folgt aussieht:

[{ "data1": "data1", ....}, {...}, ...]

Ich möchte die Daten Teil für Teil lesen, zB die Zeichenfolge zwischen "{" und "}" holen, so dass ich den genauen Inhalt von 1 JSON-Objekt bekomme, nach dem ich die Daten analysieren kann.

Ich habe auf diese link verwiesen, aber ich bekomme nicht die Position von "{" und "}", um meine JSON-Daten zu kopieren.

Gibt es eine Möglichkeit, so etwas zu implementieren?

Antwort

2

Sie auch

com.google.gson.stream.JsonReader.JsonReader

verwenden und kompilieren Sie Ihr Objekt, wie Sie Holen Sie sich die Daten vom Server. Keine Notwendigkeit, in eine Zeichenfolge zu speichern oder aus einer Datei zu schreiben und zu lesen

+0

Kann er das wirklich tun, wenn er eine 2Mb-Datei herunterladen und sie in ein json-Objekt in Ram verwandeln muss? – Snicolas

+0

und er wird es schließlich speichern. also werde ich ja sagen. Wenn er zufällige Teile wiederverwenden muss, dann ist vielleicht ein Caching-System eine bessere Option, aber nichts dergleichen wird angegeben. Auch er kann es direkt auf sqlite speichern – weakwire

+0

Ich denke, er ist besser mit einem Caching-System. Seine Anforderung, nur Teile des JSON zu bekommen, wird leichter zu erfüllen sein. – Snicolas

0

sollten Sie verwenden einen regex pattern

mehr oder weniger etwas wie folgt aus:

Pattern pattern = Pattern.compile("{(.*?)}"); 
Matcher matcher = pattern.matcher(response); 
while(matcher.find()) { 
    String jsonString = "{" + matcher.group(0) +"}" ; 
    //parse the json 
} 
Verwandte Themen