Created
July 4, 2022 11:23
-
-
Save waimus/534a2ae088209a5ab76b357fb4c1c6a7 to your computer and use it in GitHub Desktop.
Vala: build & parse rough example.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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