metahashorg/metahash-fullnode-client

Пробелы/спецсимволы в ключах JSON

Closed this issue · 3 comments

В api выдачи статуса используются ключи вида aaa_bbb_ccc (ddd), это соответствует JSON-спецификации, но на деле не самое приятное решение.

Приятнее было бы иметь все ключи в одном формате, вместо jrpc_timeout (ms) -> jrpc_timeout_ms и тд:

{
    "jsonrpc": "2.0",
    "id": 1,
    "result": {
        "version": "1.15.0",
        "git_hash": "5355480446d7efcdde2e5b74034a99c75f53f465",
        "git_date": "Fri, 3 May 2019 17:47:42 +0200",
        "network_tor_name": "tor.net-main.metahashnetwork.com:5795",
        "network_proxy_name": "proxy.net-main.metahashnetwork.com:9999",
        "network_tor": "139.162.190.134:5795",
        "network_proxy": "172.104.239.101:9999",
        "use_local_database": true,
        "allow_state_blocks": false,
        -> "jrpc_timeout (ms)": 60000,
        -> "jrpc_conn_timeout (ms)": 1000,
        "conn_pool_enable": true,
        -> "conn_pool_ttl (sec)": 60,
        "conn_pool_capacity": 100,
        "conn_pool_ready": 0,
        "conn_pool_busy": 0,
        "blocks_cache_ver": 1,
        "blocks_cache_enable": false,
        "blocks_cache_next_block": 0,
        "blocks_cache_force": true,
        -> "blocks_cache_init_count (blocks)": 50000,
        -> "blocks_cache_recv_count (blocks)": 100,
        "blocks_cache_recv_data_size (MB)": 5,
        "blocks_count": 517445,
        "last_block": 517445
    }
}

В чем причина?

Причины, как и явной проблемы, нет. Есть только пожелание иметь ключи все в одном формате.

В javascript JSON.parse распарсит указанный выше формат, но в созданном объекте нельзя будет обращаться к полям результата как к свойствам объекта.

К значению conn_pool_enable можно будет обратиться как OBJ.result.conn_pool_enable или OBJ.result.["conn_pool_enable"], а к conn_pool_ttl (sec) только как OBJ.result.["conn_pool_ttl (sec)"]

Аналогично в php, go и swift, если ключи в формате aaa_bbb_ccc или  aaaBbbbCcc - json можно сразу преобразовать в объект с соответствующими свойствами. Если же в ключах пробел или другие неразрешённые для переменных символы - надо дополнительно описывать преобразования и правила разбора.

Ок, вернул.