json #
Description
The json module provides encoding/decoding of V data structures to/from JSON. For more details, see also the JSON section of the V documentation
Examples
Here is an example of encoding and decoding a V struct with several fields. Note that you can specify different names in the json encoding for the fields, and that you can skip fields too, if needed.
import json
enum JobTitle {
    manager
    executive
    worker
}
struct Employee {
mut:
    name   string
    family string @[json: '-'] // this field will be skipped
    age    int
    salary f32
    title  JobTitle @[json: 'ETitle'] // the key for this field will be 'ETitle', not 'title'
    notes  string   @[omitempty]      // the JSON property is not created if the string is equal to '' (an empty string).
    // TODO: document @[raw]
}
fn main() {
    x := Employee{'Peter', 'Begins', 28, 95000.5, .worker, ''}
    println(x)
    s := json.encode(x)
    println('JSON encoding of employee x: ${s}')
    assert s == '{"name":"Peter","age":28,"salary":95000.5,"ETitle":"worker"}'
    mut y := json.decode(Employee, s)!
    assert y != x
    assert y.family == ''
    y.family = 'Begins'
    assert y == x
    println(y)
    ss := json.encode(y)
    println('JSON encoding of employee y: ${ss}')
    assert ss == s
}
fn decode #
fn decode(typ voidptr, s string) !voidptr
decode tries to decode the provided JSON string, into a V structure. If it can not do that, it returns an error describing the reason for the parsing failure.
fn encode #
fn encode(x voidptr) string
encode serialises the provided V value as a JSON string, optimised for shortness.
fn encode_pretty #
fn encode_pretty(x voidptr) string
encode_pretty serialises the provided V value as a JSON string, in a formatted way, optimised for viewing by humans.
struct C.cJSON #
struct C.cJSON {
	valueint    int
	valuedouble f64
	valuestring &char
}