Map Junos OS Command Output to JSON in the CLI
The Junos operating system (Junos OS) natively supports XML for the operation and configuration of devices running Junos OS, and the Junos OS command-line interface (CLI) and the Junos OS infrastructure communicate using XML. When you issue an operational command or display the configuration in the CLI, the CLI converts the output from XML into a readable text format for display.
Starting in Junos OS Release 14.2, devices running Junos OS
also support a JavaScript Object Notation (JSON) representation of
the operational command output and the Junos OS configuration hierarchy.
On the Junos OS CLI, to display the command output or configuration
in JSON instead of in the default formatted ASCII text, append the | display json
option to the command.
The following example executes the show chassis hardware
command and displays the output in JSON format. The response is
identical to the NETCONF or Junos XML protocol server response for
the <get-chassis-inventory format="json">
RPC request.
user@host> show chassis hardware | display json { "chassis-inventory" : [ { "attributes" : { "xmlns" : "http://xml.juniper.net/junos/16.1R1/junos-chassis" }, "chassis" : [ { "attributes" : {"junos:style" : "inventory"}, "name" : [ { "data" : "Chassis" } ], "serial-number" : [ { "data" : "serial-number" } ], "description" : [ { "data" : "MX80-48T" } ], "chassis-module" : [ { "name" : [ { "data" : "Midplane" } ], "version" : [ { "data" : "REV 11" } ], "part-number" : [ { "data" : "711-031603" } ], "serial-number" : [ { "data" : "serial-number" } ], "description" : [ { "data" : "MX80-48T" } ], "clei-code" : [ { "data" : "CMMAX10BRD" } ], "model-number" : [ { "data" : "CHAS-MX80-48T-S" } ] }, //* additional JSON objects *// ] } ] } ] }
Starting in Junos OS Release
16.1, Junos OS uses a new default implementation for serialization
for configuration data emitted in JSON format. The new default, ietf
, is as defined in the following
Internet drafts:
draft-ietf-netmod-yang-json-09, JSON Encoding of Data Modeled with YANG
draft-ietf-netmod-yang-metadata-06, Defining and Using Metadata with YANG
In earlier releases, the default is verbose
, which
emits all objects as JSON arrays. You can configure the default export
format for JSON configuration data by configuring the appropriate
statement at the [edit system export-format json]
hierarchy
level. You can configure the verbose
statement starting
in Junos OS Release 16.1R1, even though the statement is not exposed
in the Junos OS CLI until a later release.
Starting in Junos OS
Release 17.3R1, devices running Junos OS support emitting the device’s
operational state in compact JSON format, in which only objects that
have multiple values are emitted as JSON arrays. To configure the device to emit compact JSON format, configure the compact
statement at the [edit system export-format state-data
json]
hierarchy level.
user@host# set system export-format state-data json compact
The following example executes the show system
uptime
command and displays the output in non-compact and compact
JSON format.
user@host> show system uptime | display json
Non-compact JSON format:
{ "system-uptime-information" : [ { "attributes" : {"xmlns" : "http://xml.juniper.net/junos/18.1R1/junos"}, "current-time" : [ { "date-time" : [ { "data" : "2018-05-15 13:43:46 PDT", "attributes" : {"junos:seconds" : "1526417026"} } ] } ], "time-source" : [ { "data" : " NTP CLOCK " } ], "system-booted-time" : [ { "date-time" : [ { "data" : "2018-05-15 10:57:02 PDT", "attributes" : {"junos:seconds" : "1526407022"} } ], "time-length" : [ { "data" : "02:46:44", "attributes" : {"junos:seconds" : "10004"} } ] } ], "protocols-started-time" : [ { "date-time" : [ { "data" : "2018-05-15 10:59:33 PDT", "attributes" : {"junos:seconds" : "1526407173"} } ], "time-length" : [ { "data" : "02:44:13", "attributes" : {"junos:seconds" : "9853"} } ] } ], "last-configured-time" : [ { "date-time" : [ { "data" : "2018-05-02 17:57:44 PDT", "attributes" : {"junos:seconds" : "1525309064"} } ], "time-length" : [ { "data" : "1w5d 19:46", "attributes" : {"junos:seconds" : "1107962"} } ], "user" : [ { "data" : "admin" } ] } ], "uptime-information" : [ { "date-time" : [ { "data" : "1:43PM", "attributes" : {"junos:seconds" : "1526417026"} } ], "up-time" : [ { "data" : "2:47", "attributes" : {"junos:seconds" : "10034"} } ], "active-user-count" : [ { "data" : "1", "attributes" : {"junos:format" : "1 user"} } ], "load-average-1" : [ { "data" : "0.49" } ], "load-average-5" : [ { "data" : "0.19" } ], "load-average-15" : [ { "data" : "0.10" } ] } ] } ] }
The compact JSON format for the same command is:
{ "system-uptime-information" : { "current-time" : { "date-time" : "2018-05-15 13:49:56 PDT" }, "time-source" : " NTP CLOCK ", "system-booted-time" : { "date-time" : "2018-05-15 10:57:02 PDT", "time-length" : "02:52:54" }, "protocols-started-time" : { "date-time" : "2018-05-15 10:59:33 PDT", "time-length" : "02:50:23" }, "last-configured-time" : { "date-time" : "2018-05-15 13:49:40 PDT", "time-length" : "00:00:16", "user" : "admin" }, "uptime-information" : { "date-time" : "1:49PM", "up-time" : "2:53", "active-user-count" : "1", "load-average-1" : "0.00", "load-average-5" : "0.06", "load-average-15" : "0.06" } } }
Change History Table
Feature support is determined by the platform and release you are using. Use Feature Explorer to determine if a feature is supported on your platform.