Пробелы/спецсимволы в ключах 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 можно сразу преобразовать в объект с соответствующими свойствами. Если же в ключах пробел или другие неразрешённые для переменных символы - надо дополнительно описывать преобразования и правила разбора.
Ок, вернул.