diff options
Diffstat (limited to 'fluent-bit/lib/jansson-e23f558/examples/simple_parse.c')
-rw-r--r-- | fluent-bit/lib/jansson-e23f558/examples/simple_parse.c | 200 |
1 files changed, 0 insertions, 200 deletions
diff --git a/fluent-bit/lib/jansson-e23f558/examples/simple_parse.c b/fluent-bit/lib/jansson-e23f558/examples/simple_parse.c deleted file mode 100644 index a96a0f83..00000000 --- a/fluent-bit/lib/jansson-e23f558/examples/simple_parse.c +++ /dev/null @@ -1,200 +0,0 @@ -/* - * Simple example of parsing and printing JSON using jansson. - * - * SYNOPSIS: - * $ examples/simple_parse - * Type some JSON > [true, false, null, 1, 0.0, -0.0, "", {"name": "barney"}] - * JSON Array of 8 elements: - * JSON True - * JSON False - * JSON Null - * JSON Integer: "1" - * JSON Real: 0.000000 - * JSON Real: -0.000000 - * JSON String: "" - * JSON Object of 1 pair: - * JSON Key: "name" - * JSON String: "barney" - * - * Copyright (c) 2014 Robert Poor <rdpoor@gmail.com> - * - * Jansson is free software; you can redistribute it and/or modify - * it under the terms of the MIT license. See LICENSE for details. - */ - -#include <jansson.h> -#include <stdio.h> -#include <stdlib.h> - -/* forward refs */ -void print_json(json_t *root); -void print_json_aux(json_t *element, int indent); -void print_json_indent(int indent); -const char *json_plural(size_t count); -void print_json_object(json_t *element, int indent); -void print_json_array(json_t *element, int indent); -void print_json_string(json_t *element, int indent); -void print_json_integer(json_t *element, int indent); -void print_json_real(json_t *element, int indent); -void print_json_true(json_t *element, int indent); -void print_json_false(json_t *element, int indent); -void print_json_null(json_t *element, int indent); - -void print_json(json_t *root) { print_json_aux(root, 0); } - -void print_json_aux(json_t *element, int indent) { - switch (json_typeof(element)) { - case JSON_OBJECT: - print_json_object(element, indent); - break; - case JSON_ARRAY: - print_json_array(element, indent); - break; - case JSON_STRING: - print_json_string(element, indent); - break; - case JSON_INTEGER: - print_json_integer(element, indent); - break; - case JSON_REAL: - print_json_real(element, indent); - break; - case JSON_TRUE: - print_json_true(element, indent); - break; - case JSON_FALSE: - print_json_false(element, indent); - break; - case JSON_NULL: - print_json_null(element, indent); - break; - default: - fprintf(stderr, "unrecognized JSON type %d\n", json_typeof(element)); - } -} - -void print_json_indent(int indent) { - int i; - for (i = 0; i < indent; i++) { - putchar(' '); - } -} - -const char *json_plural(size_t count) { return count == 1 ? "" : "s"; } - -void print_json_object(json_t *element, int indent) { - size_t size; - const char *key; - json_t *value; - - print_json_indent(indent); - size = json_object_size(element); - - printf("JSON Object of %lld pair%s:\n", (long long)size, json_plural(size)); - json_object_foreach(element, key, value) { - print_json_indent(indent + 2); - printf("JSON Key: \"%s\"\n", key); - print_json_aux(value, indent + 2); - } -} - -void print_json_array(json_t *element, int indent) { - size_t i; - size_t size = json_array_size(element); - print_json_indent(indent); - - printf("JSON Array of %lld element%s:\n", (long long)size, json_plural(size)); - for (i = 0; i < size; i++) { - print_json_aux(json_array_get(element, i), indent + 2); - } -} - -void print_json_string(json_t *element, int indent) { - print_json_indent(indent); - printf("JSON String: \"%s\"\n", json_string_value(element)); -} - -void print_json_integer(json_t *element, int indent) { - print_json_indent(indent); - printf("JSON Integer: \"%" JSON_INTEGER_FORMAT "\"\n", json_integer_value(element)); -} - -void print_json_real(json_t *element, int indent) { - print_json_indent(indent); - printf("JSON Real: %f\n", json_real_value(element)); -} - -void print_json_true(json_t *element, int indent) { - (void)element; - print_json_indent(indent); - printf("JSON True\n"); -} - -void print_json_false(json_t *element, int indent) { - (void)element; - print_json_indent(indent); - printf("JSON False\n"); -} - -void print_json_null(json_t *element, int indent) { - (void)element; - print_json_indent(indent); - printf("JSON Null\n"); -} - -/* - * Parse text into a JSON object. If text is valid JSON, returns a - * json_t structure, otherwise prints and error and returns null. - */ -json_t *load_json(const char *text) { - json_t *root; - json_error_t error; - - root = json_loads(text, 0, &error); - - if (root) { - return root; - } else { - fprintf(stderr, "json error on line %d: %s\n", error.line, error.text); - return (json_t *)0; - } -} - -/* - * Print a prompt and return (by reference) a null-terminated line of - * text. Returns NULL on eof or some error. - */ -char *read_line(char *line, int max_chars) { - printf("Type some JSON > "); - fflush(stdout); - return fgets(line, max_chars, stdin); -} - -/* ================================================================ - * main - */ - -#define MAX_CHARS 4096 - -int main(int argc, char *argv[]) { - char line[MAX_CHARS]; - - if (argc != 1) { - fprintf(stderr, "Usage: %s\n", argv[0]); - exit(-1); - } - - while (read_line(line, MAX_CHARS) != (char *)NULL) { - - /* parse text into JSON structure */ - json_t *root = load_json(line); - - if (root) { - /* print and release the JSON structure */ - print_json(root); - json_decref(root); - } - } - - return 0; -} |