Skip to content

Instantly share code, notes, and snippets.

@waimus
Created July 4, 2022 11:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save waimus/534a2ae088209a5ab76b357fb4c1c6a7 to your computer and use it in GitHub Desktop.
Save waimus/534a2ae088209a5ab76b357fb4c1c6a7 to your computer and use it in GitHub Desktop.
Vala: build & parse rough example.
// valac --pkg json-glib-1.0 json_parse_build.vala
using Json;
const string JSON_PATH = "/path/to/file.json";
int main() {
build_example();
read_example();
return 0;
}
void read_example() {
try {
Json.Parser parser = new Json.Parser();
parser.load_from_file(JSON_PATH);
Json.Generator generator = new Json.Generator();
generator.set_root(parser.get_root());
generator.set_pretty(true);
size_t len;
string str_data = generator.to_data(out len);
stdout.printf(@"$(str_data)\n\n");
} catch (Error e) {
stderr.printf(@"$(e.message)");
}
}
void build_example() {
Json.Builder builder = new Json.Builder();
// New object
builder.begin_object();
builder.set_member_name("entries"); // member name
builder.begin_array(); // create array as value
// Array member 1: new object
builder.begin_object();
builder.set_member_name("id"); // new member -> name: "ID", value: 1
builder.add_int_value(1);
builder.set_member_name("key"); // new member -> name: "key", value: "smth"
builder.add_string_value("smth");
builder.set_member_name("value"); // new member -> name: "value", value: "smth related abt the key"
builder.add_string_value("smth longer related abt the key");
builder.end_object(); // close object
// Array member 2: new object
builder.begin_object();
builder.set_member_name("id"); // new member -> name: "ID", value: 2
builder.add_int_value(2);
builder.set_member_name("key"); // new member -> name: "key", value: "other key"
builder.add_string_value("other key");
builder.set_member_name("value"); // new member -> name: "value", value: "key related abt the key"
builder.add_string_value("key related abt the key");
builder.end_object(); // close object
builder.end_array(); // close array
builder.end_object(); // close object
Json.Node root = builder.get_root();
Json.Generator generator = new Json.Generator();
generator.set_root(root);
generator.set_pretty(true);
size_t len;
string str_data = generator.to_data(out len);
stdout.printf(@"$(str_data)\n\n");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment