Wenn ich eine ListAccounts-Abfrage durchführe, erhalte ich Folgendes:
{
"result": {
"": 0.0,
"account": 0.0,
"account3": 0.0,
"account7": 0.0
},
"error": null,
"id": "1"
}
Allerdings ListReceivedByAccount(0, true); sieht aus wie das:
{
"result": [
{
"account": "",
"amount": 0.0,
"confirmations": 0
},
{
"account": "account",
"amount": 0.0,
"confirmations": 0
},
{
"account": "account3",
"amount": 0.0,
"confirmations": 0
},
{
"account": "account7",
"amount": 0.0,
"confirmations": 0
}
],
"error": null,
"id": "1"
Beachten Sie, wie die eingebetteten Array-Daten unterschiedlich formatiert sind? Gibt es einen Namen oder Begriff, der diese unterschiedlichen Array-Formate beschreibt (benannt oder unbenannt)?
Warum ist es anders und kann dies in einer zukünftigen Version behoben werden?
Wenn es in einer zukünftigen Version behoben wird, wird die äußerste Eigenschaft "id" zu "2", damit ich die Logik zu meinen Parsern hinzufügen kann?
Die JSON-Datenstruktur unterstützt Listen (Arrays).
Im ersten API-Befehl (ListAccounts) ist der Ergebnisinhalt ein Objekt, das einen String enthält. Innerhalb dieser Zeichenfolge befindet sich eine Reihe von Datensätzen, von denen jeder ein Schlüssel/Wert-Element ist.
In der zweiten (ListReceivedByAccount) ist der Ergebnisinhalt ein Array von Objekten, von denen jedes Kontodaten enthält.
Das erscheint inkonsistent, wo vielleicht der erste Aufruf auch ein Array hätte zurückgeben sollen.
Als Faustregel gilt jedoch, dass sich bestehende APIs nicht ändern sollten. Sie können veraltet sein und ersetzt werden, aber es wird erwartet, dass sich ein Aufruf konsistent verhält.
Der Bitcoin-Client ist ein Open-Source-Projekt und daher kann ein Issue-Ticket für diese Inkonsistenz geöffnet und ein Pull-Request mit der Quelle für einen neuen API-Aufruf eingereicht werden. Ob ein solches Problem mit dem Client zusammengeführt wird, hängt von einer Reihe von Faktoren ab, einschließlich der Schwere des Problems.
Stefan Gornik
Macher7