Cuando realizo una consulta de ListAccounts obtengo esto:
{
"result": {
"": 0.0,
"account": 0.0,
"account3": 0.0,
"account7": 0.0
},
"error": null,
"id": "1"
}
Sin embargo ListReceivedByAccount(0, true); Se ve como esto:
{
"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"
¿Observa cómo los datos de la matriz incrustada tienen un formato diferente? ¿Hay algún nombre o término que describa estos diferentes formatos de matriz (con nombre o sin nombre)?
¿Por qué es diferente y se puede solucionar en una versión futura?
Si se corrige en una versión futura, ¿la propiedad "id" más externa se convertirá en "2" para que pueda agregar la lógica a mis analizadores?
La estructura de datos JSON admite listas (matrices).
En el primer comando API (ListAccounts), el contenido del resultado es un objeto que contiene una cadena. Dentro de esta cadena hay un conjunto de registros de datos, cada uno de los cuales es un elemento clave/valor.
En el segundo (ListReceivedByAccount), el contenido del resultado es una matriz de objetos, cada uno de los cuales contiene datos de cuenta.
Eso parece inconsistente, donde quizás la primera llamada también debería haber devuelto una matriz.
Sin embargo, una regla general es que las API existentes no deben cambiar. Pueden ser obsoletos y reemplazados, pero se espera que una llamada se comporte de manera consistente.
El cliente de Bitcoin es un proyecto de código abierto y, por lo tanto, se puede abrir un ticket de emisión para esta inconsistencia y enviar una solicitud de extracción con la fuente para una nueva llamada API. Si un problema de este tipo se fusiona con el cliente depende de una serie de factores, incluida la gravedad del problema.
Esteban Gornick
fabricante de cosas7