coverage¶
El comando coverage
cuenta el número de veces que cada campo JSON no está vacío.
Ejecute el comando help
para leer su descripción, formato de salida y opciones:
$ ocdscardinal help coverage
Count the number of times each field is non-empty in a line-delimited JSON file
The command walks the JSON tree, counting non-empty nodes. Empty nodes are "", [], {} and null, and
any nodes containing only empty nodes.
The result is a JSON object, in which keys are paths and values are counts.
The "" path corresponds to a line. A path ending with / corresponds to an object. A path ending with
[] corresponds to an array element. Other paths correspond to object members.
Usage: ocdscardinal[EXE] coverage [OPTIONS] <FILE>
Arguments:
<FILE>
The path to the file (or "-" for standard input), in which each line is JSON text
Options:
-v, --verbose...
Increase verbosity
-h, --help
Print help (see a summary with '-h')
Demonstración¶
Dado este archivo JSON delimitado por líneas:
{"phoneNumbers": [{"type": "home", "number": "212 555-1234"}, {"type": "office", "number": "646 555-4567"}]}
El comando coverage
da como salida:
$ ocdscardinal coverage docs/examples/coverage.jsonl
{"/phoneNumbers[]/type": 2, "/phoneNumbers[]/number": 2, "/phoneNumbers[]/": 2, "/phoneNumbers[]": 2, "/phoneNumbers": 1, "/": 1, "": 1}
Salvedades¶
Nota
No se espera encontrar estos casos extremos en los datos reales.
Si el nombre de un miembro está duplicado, sólo se tiene en cuenta el último duplicado:
{"a":0,"a":null}
$ ocdscardinal coverage docs/examples/coverage-duplicate.jsonl
{}
Si un nombre de miembro está vacío, su ruta es la misma que la de su objeto de nivel superior:
{"":0}
$ ocdscardinal coverage docs/examples/coverage-empty.jsonl
{"/": 2, "": 1}
Si el nombre de un miembro termina en []
, su ruta puede ser la misma que la de otro:
{"a[]":0,"a":[0]}
$ ocdscardinal coverage docs/examples/coverage-bracket.jsonl
{"/a[]": 2, "/a": 1, "/": 1, "": 1}