# extract_json_field

Definition: | include builtins\json.e object res = extract_json_field(sequence json_object, string string name, object object dflt="?9/0")
Description: | Retrieves a named field from a JSON_OBJECT. json_object: must be a valid JSON_OBJECT. name: the name of the element to retrieve. dflt: the value to return if the field is not found.
pwa/p2js: | Supported.
Notes: | A fatal error occurs if json_object is not a sequence or json_object[1]!=JSON_OBJECT. The result may be a number, a string, a JSON_OBJECT, a JSON_ARRAY, a JSON_KEYWORD, or the value in dflt. If dlft is not overidden, a fatal error occurs if the field is not found (which is useful to trap typos), but of course you can specify any value such as 0, -1, "??", or {} - pick something not likely to be confused with anything in the actual data - the best choice probably being {}, since the equivalents of that from parse_json() are typically {JSON_OBJECT} ("{}") or {JSON_ARRAY} ("[]").
Example: | Copy
    include builtins\json.e
    string str = `{"this":"that","age":29}`
    object res = parse_json(str)
    if res={JSON_INVALID} then
        ?"error: invalid json"
    elsif sequence(res) and res[1]=JSON_OBJECT then
        ?extract_json_field(res,"this") -- "that"
        ?extract_json_field(res,"age")  -- 29
    else
        ?res -- ???
    end if
See Also: | parse_json