Greenbone Vulnerability Management Libraries 22.17.0
json.c
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2024 Greenbone AG
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later
4 */
5
6#include "json.h"
7
16gchar *
17gvm_json_string_escape (const char *string, gboolean single_quote)
18{
19 gchar *point;
20 if (string == NULL)
21 return NULL;
22
23 GString *escaped = g_string_sized_new (strlen (string));
24 for (point = (char *) string; *point != 0; point++)
25 {
26 unsigned char character = *point;
27
28 if ((character > 31) && (character != '\\')
29 && (single_quote ? (character != '\'') : (character != '\"')))
30 {
31 g_string_append_c (escaped, character);
32 }
33 else
34 {
35 g_string_append_c (escaped, '\\');
36 switch (*point)
37 {
38 case '\\':
39 case '\'':
40 case '\"':
41 g_string_append_c (escaped, *point);
42 break;
43 case '\b':
44 g_string_append_c (escaped, 'b');
45 break;
46 case '\f':
47 g_string_append_c (escaped, 'f');
48 break;
49 case '\n':
50 g_string_append_c (escaped, 'n');
51 break;
52 case '\r':
53 g_string_append_c (escaped, 'r');
54 break;
55 case '\t':
56 g_string_append_c (escaped, 't');
57 break;
58 default:
59 g_string_append_printf (escaped, "u%04x", character);
60 }
61 }
62 }
63 return g_string_free (escaped, FALSE);
64}
65
74double
75gvm_json_obj_double (cJSON *obj, const gchar *key)
76{
77 cJSON *item;
78
79 item = cJSON_GetObjectItem (obj, key);
80 if (item && cJSON_IsNumber (item))
81 return item->valuedouble;
82
83 return 0;
84}
85
94gchar *
95gvm_json_obj_str (cJSON *obj, const gchar *key)
96{
97 cJSON *item;
98
99 item = cJSON_GetObjectItem (obj, key);
100 if (item && cJSON_IsString (item))
101 return item->valuestring;
102
103 return 0;
104}
double gvm_json_obj_double(cJSON *obj, const gchar *key)
Get a double field from a JSON object.
Definition json.c:75
gchar * gvm_json_string_escape(const char *string, gboolean single_quote)
Escapes a string according to the JSON or JSONPath standard.
Definition json.c:17
gchar * gvm_json_obj_str(cJSON *obj, const gchar *key)
Get a string field from a JSON object.
Definition json.c:95