Puppet Function: parsejson

Defined in:
vendor_modules/stdlib/lib/puppet/parser/functions/parsejson.rb
Function type:
Ruby 3.x API

Summary

This function accepts JSON as a string and converts it into the correct Puppet structure.

Overview

parsejson()Any

> Note:

The optional second argument can be used to pass a default value that will
be returned if the parsing of the JSON string failed or if the JSON parse
evaluated to nil.

Returns:

  • (Any)

    convert JSON into Puppet structure



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'vendor_modules/stdlib/lib/puppet/parser/functions/parsejson.rb', line 8

newfunction(:parsejson, type: :rvalue, doc: <<-DOC
  @summary
    This function accepts JSON as a string and converts it into the correct
    Puppet structure.

  @return
    convert JSON into Puppet structure

  > *Note:*
    The optional second argument can be used to pass a default value that will
    be returned if the parsing of the JSON string failed or if the JSON parse
    evaluated to nil.
DOC
) do |arguments|
  raise ArgumentError, 'Wrong number of arguments. 1 or 2 arguments should be provided.' unless arguments.length >= 1

  begin
    Puppet::Util::Json.load(arguments[0]) || arguments[1]
  rescue StandardError => e
    raise e unless arguments[1]
    arguments[1]
  end
end