Ich habe einen JSON-String, die wie folgt aussieht:Wie teilt man den String effizienter auf?
{"Detail": [
{"PrimaryKey":111,"Date":"2016-09-01","Version":"7","Count":2,"Name":"Windows","LastAccessTime":"2016-05-25T21:49:52.36Z"},
{"PrimaryKey":222,"Date":"2016-09-02","Version":"8","Count":2,"Name":"Windows","LastAccessTime":"2016-07-25T21:49:52.36Z"},
{"PrimaryKey":333,"Date":"2016-09-03","Version":"9","Count":3,"Name":"iOS","LastAccessTime":"2016-08-22T21:49:52.36Z"},
.....(*many values)
]}
Das Array Detail
viele PrimaryKey
s hat. Manchmal ist es etwa 500K PrimaryKey
s. Das System, das wir verwenden, kann nur JSON-Zeichenfolgen mit einer bestimmten Länge, d. H. 128 KB, verarbeiten. Also muss ich diese JSON-Zeichenfolge in Segmente aufteilen (jede ist 128 KB oder weniger Zeichen lang).
Regex reg = new Regex(@"\{"".{0," + (128*1024).ToString() + @"}""\}");
MatchCollection mc = reg.Matches(myListString);
Derzeit verwende ich regulären Ausdruck, um dies zu tun. Es funktioniert gut. Es verwendet jedoch zu viel Arbeitsspeicher. Gibt es einen besseren Weg dies zu tun (unnötig um regulärer Ausdruck zu sein)?
*** Weitere Informationen hinzugefügt.
Das 'System', das ich oben erwähnte, ist Azure DocumentDB. Standardmäßig kann das Dokument nur 512 KB groß sein (wie jetzt). Obwohl wir MS diese erhöhen können, aber die JSON-Datei haben wir immer viel viel mehr als 512KB. Deshalb müssen wir einen Weg finden, dies zu tun.
Wenn möglich, möchten wir weiterhin documentDB verwenden, aber wir sind offen für andere Vorschläge.
*** Einige Informationen, um die Dinge zu verdeutlichen: 1) Die Werte im Array sind unterschiedlich. Nicht dupliziert. 2) Ja, ich benutze StringBuilder wann immer ich kann. 3) Ja, ich habe versucht, IndexOf & Substring, aber basierend auf Tests, die Leistung ist nicht besser als regulärer Ausdruck in diesem Fall (obwohl es könnte die Art, wie ich es implementieren).
* ** Das Json-Objekt ist komplex, aber alles was mich interessiert, ist dieses "Detail", das ein Array ist. Wir können davon ausgehen, dass die Zeichenfolge genau wie das Beispiel ist, nur "Detail" hat. Wir müssen diese json-Array-Zeichenfolge in eine Größe von weniger als 512 KB aufteilen. Grundsätzlich können wir dies als eine einfache Zeichenfolge, nicht Json denken. Aber es ist ein JSON-Format, also können vielleicht einige Bibliotheken das besser machen.
Welches System? (Das System, das wir verwenden, kann nur die JSON-Zeichenfolge mit bestimmter Länge verarbeiten, dh 128 KB) –
Sie müssen Ihren JSON im Wesentlichen neu schreiben, um gültig zu sein JSON von geringerer Länge, oder ist das "System" Sie sprechen über Homebrew und doesn ' t interessiert es wirklich, ob es gültiger json ist oder nicht? Werfen Sie einen Blick auf json.net oder etwas, das diese Art von Einschränkung nicht hat? –
Wenn Sie das genaue Format Ihrer Daten kennen und nicht daran interessiert sind, den Parsing-Code zu brechen, wenn sich das Format ändert, würde ich ein paar "IndexOf" und "Substring" anwenden. –