2017-03-07 2 views
0

Ich verwende Verarbeitung, um Daten aus dem Web mit einem API-Aufruf zu scrape, um ein JSON-Objekt jede Minute zu erhalten, die mit dem Folgenden getan wird;Dateiname im lokalen Speicher an saveJSONObject sequentiell anfügen

JSONObject raw = loadJSONObject(url); 
events = raw.getJSONArray("theThingiWant"); 

Ich benutze saveJSONObject(raw, "data/scraped"+".json"); dann dieses Objekt zu speichern.

Ich bin mir bewusst, dass bei der Verarbeitung, gibt es saveframe() Funktion, die Sie Frames nacheinander in ein Zahlenformat Ihrer Wahl speichern können und hatte gehofft, dass saveJSONObject würde dies in sich haben, aber es nicht tut.

Ich möchte mehrere JSON-Objekte sequenziell speichern, so dass mein Datenordner scrape001, scrape002 usw. enthält. Gibt es dafür eine Funktion oder würde es durch Abrufen und Anhängen der zuletzt gespeicherten Datei erfolgen?

Antwort

1

Zusätzlich zu Ihrer millis() Lösung können Sie auch einfach einen int Wert verfolgen, ihn beim Erstellen eines Dateinamens verwenden und ihn beim Speichern einer Datei inkrementieren.

Etwas wie folgt aus:

int files = 0; 

void draw(){ 
    saveJSONObject(whatever, "scraped" + files + ".json"); 
    files++; 
} 

könnten Sie auch die frameCount Variable verwenden:

void draw(){ 
    saveJSONObject(whatever, "scraped" + frameCount+ ".json"); 
    files++; 
} 
0

Also ich habe eine funktionierende Lösung zu dem, was ich wie folgt tun wollte;

Ich weiß, ich rufe die API und bekomme jede Minute ein neues JSON-Objekt. Ich kann dies mit der Millis() Funktion bei der Verarbeitung in Verbindung verwenden, wie unten

saveJSONObject(raw, "data/scraped00"+(millis()/60000)+".json");

Was dies bedeutet ist, die JsonObject speichern dann append es mit einer unqiue Zahl, erzeugt durch Millis() Aufteilen daß durch 60000 wandelt von Millisekunden bis Minuten. Dies bedeutet, dass die Datei den letzten Speichervorgang nicht überschreibt, sondern eine neue Datei in Schritten von einer Minute generiert.

Verwandte Themen