本文整理汇总了C++中JsonObjectAppendString函数的典型用法代码示例。如果您正苦于以下问题:C++ JsonObjectAppendString函数的具体用法?C++ JsonObjectAppendString怎么用?C++ JsonObjectAppendString使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了JsonObjectAppendString函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: test_show_object_compound_compact
static void test_show_object_compound_compact(void)
{
JsonElement *json = JsonObjectCreate(10);
JsonObjectAppendString(json, "first", "one");
{
JsonElement *inner = JsonObjectCreate(10);
JsonObjectAppendString(inner, "third", "three");
JsonObjectAppendObject(json, "second", inner);
}
{
JsonElement *inner = JsonObjectCreate(10);
JsonObjectAppendString(inner, "fifth", "five");
JsonObjectAppendObject(json, "fourth", inner);
}
Writer *writer = StringWriter();
JsonWriteCompact(writer, json);
char *output = StringWriterClose(writer);
assert_string_equal("{\"first\":\"one\",\"second\":{\"third\":\"three\"},\"fourth\":{\"fifth\":\"five\"}}", output);
JsonDestroy(json);
free(output);
}
示例2: assert
static JsonElement *FnCallToJson(const FnCall *fp)
{
assert(fp);
JsonElement *object = JsonObjectCreate(3);
JsonObjectAppendString(object, "name", fp->name);
JsonObjectAppendString(object, "type", "function-call");
JsonElement *argsArray = JsonArrayCreate(5);
for (Rlist *rp = fp->args; rp != NULL; rp = rp->next)
{
switch (rp->val.type)
{
case RVAL_TYPE_SCALAR:
JsonArrayAppendString(argsArray, RlistScalarValue(rp));
break;
case RVAL_TYPE_FNCALL:
JsonArrayAppendObject(argsArray, FnCallToJson(RlistFnCallValue(rp)));
break;
default:
assert(false && "Unknown argument type");
break;
}
}
JsonObjectAppendArray(object, "arguments", argsArray);
return object;
}
示例3: JsonObjectCreate
static JsonElement *ExportAttributeValueAsJson(Rval rval)
{
JsonElement *json_attribute = JsonObjectCreate(10);
switch (rval.rtype)
{
case CF_SCALAR:
{
char buffer[CF_BUFSIZE];
EscapeQuotes((const char *) rval.item, buffer, sizeof(buffer));
JsonObjectAppendString(json_attribute, "type", "string");
JsonObjectAppendString(json_attribute, "value", buffer);
}
return json_attribute;
case CF_LIST:
{
Rlist *rp = NULL;
JsonElement *list = JsonArrayCreate(10);
JsonObjectAppendString(json_attribute, "type", "list");
for (rp = (Rlist *) rval.item; rp != NULL; rp = rp->next)
{
JsonArrayAppendObject(list, ExportAttributeValueAsJson((Rval) {rp->item, rp->type}));
}
JsonObjectAppendArray(json_attribute, "value", list);
return json_attribute;
}
case CF_FNCALL:
{
Rlist *argp = NULL;
FnCall *call = (FnCall *) rval.item;
JsonObjectAppendString(json_attribute, "type", "function-call");
JsonObjectAppendString(json_attribute, "name", call->name);
{
JsonElement *arguments = JsonArrayCreate(10);
for (argp = call->args; argp != NULL; argp = argp->next)
{
JsonArrayAppendObject(arguments, ExportAttributeValueAsJson((Rval) {argp->item, argp->type}));
}
JsonObjectAppendArray(json_attribute, "arguments", arguments);
}
return json_attribute;
}
default:
FatalError("Attempted to export attribute of type: %c", rval.rtype);
return NULL;
}
}
示例4: test_object_iterator
static void test_object_iterator(void **state)
{
JsonElement *obj = JsonObjectCreate(10);
JsonObjectAppendString(obj, "first", "one");
JsonObjectAppendString(obj, "second", "two");
JsonObjectAppendInteger(obj, "third", 3);
JsonObjectAppendBool(obj, "fourth", true);
JsonObjectAppendBool(obj, "fifth", false);
{
JsonIterator it = JsonIteratorInit(obj);
assert_string_equal("first", JsonIteratorNextKey(&it));
assert_string_equal("second", JsonIteratorNextKey(&it));
assert_string_equal("third", JsonIteratorNextKey(&it));
assert_string_equal("fourth", JsonIteratorNextKey(&it));
assert_string_equal("fifth", JsonIteratorNextKey(&it));
assert_false(JsonIteratorNextKey(&it));
}
{
JsonIterator it = JsonIteratorInit(obj);
assert_string_equal("one", JsonPrimitiveGetAsString(JsonIteratorNextValue(&it)));
assert_string_equal("two", JsonPrimitiveGetAsString(JsonIteratorNextValue(&it)));
assert_int_equal(3, JsonPrimitiveGetAsInteger(JsonIteratorNextValue(&it)));
assert_true(JsonPrimitiveGetAsBool(JsonIteratorNextValue(&it)));
assert_false(JsonPrimitiveGetAsBool(JsonIteratorNextValue(&it)));
assert_false(JsonIteratorNextValue(&it));
}
JsonElementDestroy(obj);
}
示例5: test_show_object_compound
static void test_show_object_compound(void)
{
JsonElement *json = JsonObjectCreate(10);
JsonObjectAppendString(json, "first", "one");
{
JsonElement *inner = JsonObjectCreate(10);
JsonObjectAppendString(inner, "third", "three");
JsonObjectAppendObject(json, "second", inner);
}
{
JsonElement *inner = JsonObjectCreate(10);
JsonObjectAppendString(inner, "fifth", "five");
JsonObjectAppendObject(json, "fourth", inner);
}
Writer *writer = StringWriter();
JsonWrite(writer, json, 0);
char *output = StringWriterClose(writer);
assert_string_equal(OBJECT_COMPOUND, output);
JsonDestroy(json);
free(output);
}
示例6: JsonObjectCreate
static JsonElement *FnCallTypeToJson(const FnCallType *fn_syntax)
{
JsonElement *json_fn = JsonObjectCreate(10);
JsonObjectAppendString(json_fn, "status", SyntaxStatusToString(fn_syntax->status));
JsonObjectAppendString(json_fn, "returnType", DataTypeToString(fn_syntax->dtype));
{
JsonElement *params = JsonArrayCreate(10);
for (int i = 0; fn_syntax->args[i].pattern; i++)
{
const FnCallArg *param = &fn_syntax->args[i];
JsonElement *json_param = JsonObjectCreate(2);
JsonObjectAppendString(json_param, "type", DataTypeToString(param->dtype));
JsonObjectAppendString(json_param, "range", param->pattern);
JsonArrayAppendObject(params, json_param);
}
JsonObjectAppendArray(json_fn, "parameters", params);
}
JsonObjectAppendBool(json_fn, "variadic", fn_syntax->options & FNCALL_OPTION_VARARG);
JsonObjectAppendBool(json_fn, "cached", fn_syntax->options & FNCALL_OPTION_CACHED);
JsonObjectAppendString(json_fn, "category", FnCallCategoryToString(fn_syntax->category));
return json_fn;
}
示例7: test_show_object_compound
static void test_show_object_compound(void **state)
{
JsonElement *json = JsonObjectCreate(10);
JsonObjectAppendString(json, "first", "one");
{
JsonElement *inner = JsonObjectCreate(10);
JsonObjectAppendString(inner, "third", "three");
JsonObjectAppendObject(json, "second", inner);
}
{
JsonElement *inner = JsonObjectCreate(10);
JsonObjectAppendString(inner, "fifth", "five");
JsonObjectAppendObject(json, "fourth", inner);
}
Writer *writer = StringWriter();
JsonElementPrint(writer, json, 0);
assert_string_equal(OBJECT_COMPOUND, StringWriterData(writer));
JsonElementDestroy(json);
}
示例8: JsonObjectCreate
static JsonElement *ExportAttributesSyntaxAsJson(const ConstraintSyntax attributes[])
{
JsonElement *json = JsonObjectCreate(10);
int i = 0;
if (attributes == NULL)
{
return json;
}
for (i = 0; attributes[i].lval != NULL; i++)
{
if (attributes[i].range.validation_string == CF_BUNDLE)
{
/* TODO: must handle edit_line somehow */
continue;
}
else if (attributes[i].dtype == DATA_TYPE_BODY)
{
JsonElement *json_attributes = ExportAttributesSyntaxAsJson(attributes[i].range.body_type_syntax->constraints);
JsonObjectAppendObject(json, attributes[i].lval, json_attributes);
}
else
{
JsonElement *attribute = JsonObjectCreate(10);
JsonObjectAppendString(attribute, "datatype", CF_DATATYPES[attributes[i].dtype]);
if (strlen(attributes[i].range.validation_string) == 0)
{
JsonObjectAppendString(attribute, "pcre-range", ".*");
}
else if (attributes[i].dtype == DATA_TYPE_OPTION || attributes[i].dtype == DATA_TYPE_OPTION_LIST)
{
JsonElement *options = JsonArrayCreate(10);
char options_buffer[CF_BUFSIZE];
char *option = NULL;
strcpy(options_buffer, attributes[i].range.validation_string);
for (option = strtok(options_buffer, ","); option != NULL; option = strtok(NULL, ","))
{
JsonArrayAppendString(options, option);
}
JsonObjectAppendArray(attribute, "pcre-range", options);
}
else
{
char *pcre_range = PCREStringToJsonString(attributes[i].range.validation_string);
JsonObjectAppendString(attribute, "pcre-range", pcre_range);
}
JsonObjectAppendObject(json, attributes[i].lval, attribute);
}
}
return json;
}
示例9: assert
JsonElement *FnCallToJson(FnCall *fp)
{
assert(fp);
JsonElement *object = JsonObjectCreate(3);
JsonObjectAppendString(object, "name", fp->name);
JsonObjectAppendString(object, "type", "function-call");
JsonElement *argsArray = JsonArrayCreate(fp->argc);
for (Rlist *rp = fp->args; rp != NULL; rp = rp->next)
{
switch (rp->type)
{
case CF_SCALAR:
JsonArrayAppendString(argsArray, (const char *) rp->item);
break;
case CF_FNCALL:
JsonArrayAppendObject(argsArray, FnCallToJson((FnCall *) rp->item));
break;
default:
assert(false && "Unknown argument type");
break;
}
}
JsonObjectAppendArray(object, "arguments", argsArray);
return object;
}
示例10: JsonArrayCreate
static JsonElement *ExportBundleClassesAsJson(Promise *promises)
{
JsonElement *json_contexts = JsonArrayCreate(10);
JsonElement *json_promises = JsonArrayCreate(10);
char *current_context = "any";
size_t context_offset_start = -1;
size_t context_offset_end = -1;
Promise *pp = NULL;
for (pp = promises; pp != NULL; pp = pp->next)
{
JsonElement *json_promise = JsonObjectCreate(10);
JsonObjectAppendInteger(json_promise, "offset", pp->offset.start);
{
JsonElement *json_promise_attributes = JsonArrayCreate(10);
Constraint *cp = NULL;
for (cp = pp->conlist; cp != NULL; cp = cp->next)
{
JsonElement *json_attribute = JsonObjectCreate(10);
JsonObjectAppendInteger(json_attribute, "offset", cp->offset.start);
JsonObjectAppendInteger(json_attribute, "offset-end", cp->offset.end);
context_offset_end = cp->offset.end;
JsonObjectAppendString(json_attribute, "lval", cp->lval);
JsonObjectAppendObject(json_attribute, "rval", ExportAttributeValueAsJson(cp->rval));
JsonArrayAppendObject(json_promise_attributes, json_attribute);
}
JsonObjectAppendInteger(json_promise, "offset-end", context_offset_end);
JsonObjectAppendString(json_promise, "promiser", pp->promiser);
/* FIXME: does not work for lists */
if (pp->promisee.rtype == CF_SCALAR || pp->promisee.rtype == CF_NOPROMISEE)
{
JsonObjectAppendString(json_promise, "promisee", pp->promisee.item);
}
JsonObjectAppendArray(json_promise, "attributes", json_promise_attributes);
}
JsonArrayAppendObject(json_promises, json_promise);
if (pp->next == NULL || strcmp(current_context, pp->next->classes) != 0)
{
JsonArrayAppendObject(json_contexts,
CreateContextAsJson(current_context,
context_offset_start,
context_offset_end, "promises", json_promises));
current_context = pp->classes;
}
}
return json_contexts;
}
示例11: test_object_duplicate_key
static void test_object_duplicate_key(void)
{
JsonElement *a = JsonObjectCreate(1);
JsonObjectAppendString(a, "a", "a");
JsonObjectAppendString(a, "a", "a");
assert_int_equal(1, JsonLength(a));
JsonDestroy(a);
}
示例12: test_object_get_string
static void test_object_get_string(void)
{
JsonElement *obj = JsonObjectCreate(10);
JsonObjectAppendString(obj, "first", "one");
JsonObjectAppendString(obj, "second", "two");
assert_string_equal(JsonObjectGetAsString(obj, "second"), "two");
assert_string_equal(JsonObjectGetAsString(obj, "first"), "one");
JsonDestroy(obj);
}
示例13: test_show_object_simple
static void test_show_object_simple(void **state)
{
JsonElement *json = JsonObjectCreate(10);
JsonObjectAppendString(json, "first", "one");
JsonObjectAppendString(json, "second", "two");
Writer *writer = StringWriter();
JsonElementPrint(writer, json, 0);
assert_string_equal(OBJECT_SIMPLE, StringWriterData(writer));
JsonElementDestroy(json);
}
示例14: test_new_delete
static void test_new_delete(void)
{
JsonElement *json = JsonObjectCreate(10);
JsonObjectAppendString(json, "first", "one");
JsonDestroy(json);
}
示例15: WriteReleaseIdFile
/**
* @brief Writes a file with a contained release ID based on git SHA,
* or file checksum if git SHA is not available.
* @param filename the release_id file
* @param dirname the directory to checksum or get the Git hash
* @return True if successful
*/
static bool WriteReleaseIdFile(const char *filename, const char *dirname)
{
char release_id[GENERIC_AGENT_CHECKSUM_SIZE];
bool have_release_id =
GeneratePolicyReleaseID(release_id, sizeof(release_id), dirname);
if (!have_release_id)
{
return false;
}
int fd = creat(filename, 0600);
if (fd == -1)
{
Log(LOG_LEVEL_ERR, "While writing policy release ID file '%s', could not create file (creat: %s)", filename, GetErrorStr());
return false;
}
JsonElement *info = JsonObjectCreate(3);
JsonObjectAppendString(info, "releaseId", release_id);
Writer *w = FileWriter(fdopen(fd, "w"));
JsonWrite(w, info, 0);
WriterClose(w);
JsonDestroy(info);
Log(LOG_LEVEL_VERBOSE, "Saved policy release ID file '%s'", filename);
return true;
}