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}