mirror of
https://gitee.com/zlgopen/awtk.git
synced 2024-11-30 02:58:26 +08:00
add some helper functions for json in str_t
This commit is contained in:
parent
29297fcb4a
commit
91373e9348
@ -1,15 +1,16 @@
|
||||
# 最新动态
|
||||
* 2020/03/18
|
||||
* 增加 cjson。
|
||||
|
||||
* str 中增加了辅助一些 json 打包的函数。
|
||||
|
||||
* 2020/03/17
|
||||
* 修复在 ubuntu 编译 fb_gl 模式下出现编译出错的问题(感谢智明提供补丁)。
|
||||
* 修复圆角矩形半径为负数时候出现的bug(感谢智明提供补丁)。
|
||||
* 修复圆角矩形半径为负数时候出现的 bug(感谢智明提供补丁)。
|
||||
* progress circle 支持 line cap 属性。
|
||||
* 增加 vgcanvas\_line\_join\_t 定义。
|
||||
* 增加 vgcanvas\_line\_cap\_t 定义。
|
||||
* 更新文档和idl.json
|
||||
* 修改 dragger 放在list view中的问题(感谢大恒提供补丁)。
|
||||
* 更新文档和 idl.json
|
||||
* 修改 dragger 放在 list view 中的问题(感谢大恒提供补丁)。
|
||||
* 完善 combo_box (感谢尧燊提供补丁)。
|
||||
* 完善 edit(感谢尧燊提供补丁)。
|
||||
* 完善 slide menu(感谢尧燊提供补丁)。
|
||||
|
@ -578,3 +578,70 @@ ret_t str_pop(str_t* str) {
|
||||
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
ret_t str_append_double(str_t* str, const char* format, double value) {
|
||||
char buff[64];
|
||||
const char* fmt = format != NULL ? format : "%.4lf";
|
||||
return_value_if_fail(str != NULL, RET_BAD_PARAMS);
|
||||
|
||||
tk_snprintf(buff, sizeof(buff), fmt, value);
|
||||
|
||||
return str_append(str, buff);
|
||||
}
|
||||
|
||||
ret_t str_append_json_str(str_t* str, const char* json_str) {
|
||||
const char* p = json_str;
|
||||
return_value_if_fail(str != NULL, RET_BAD_PARAMS);
|
||||
return_value_if_fail(str_append_char(str, '\"') == RET_OK, RET_OOM);
|
||||
if (p != NULL) {
|
||||
while (*p) {
|
||||
if (*p == '\"') {
|
||||
return_value_if_fail(str_append_char(str, '\\') == RET_OK, RET_OOM);
|
||||
}
|
||||
return_value_if_fail(str_append_char(str, *p) == RET_OK, RET_OOM);
|
||||
p++;
|
||||
}
|
||||
}
|
||||
return_value_if_fail(str_append_char(str, '\"') == RET_OK, RET_OOM);
|
||||
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
ret_t str_append_json_int_pair(str_t* str, const char* key, int32_t value) {
|
||||
return_value_if_fail(str != NULL && key != NULL, RET_BAD_PARAMS);
|
||||
|
||||
return_value_if_fail(str_append_json_str(str, key) == RET_OK, RET_OOM);
|
||||
return_value_if_fail(str_append_char(str, ':') == RET_OK, RET_OOM);
|
||||
return_value_if_fail(str_append_int(str, value) == RET_OK, RET_OOM);
|
||||
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
ret_t str_append_json_str_pair(str_t* str, const char* key, const char* value) {
|
||||
return_value_if_fail(str != NULL && key != NULL && value != NULL, RET_BAD_PARAMS);
|
||||
|
||||
return_value_if_fail(str_append_json_str(str, key) == RET_OK, RET_OOM);
|
||||
return_value_if_fail(str_append_char(str, ':') == RET_OK, RET_OOM);
|
||||
return_value_if_fail(str_append_json_str(str, value) == RET_OK, RET_OOM);
|
||||
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
ret_t str_append_json_double_pair(str_t* str, const char* key, double value) {
|
||||
return_value_if_fail(str != NULL && key != NULL, RET_BAD_PARAMS);
|
||||
|
||||
return_value_if_fail(str_append_json_str(str, key) == RET_OK, RET_OOM);
|
||||
return_value_if_fail(str_append_char(str, ':') == RET_OK, RET_OOM);
|
||||
return_value_if_fail(str_append_double(str, NULL, value) == RET_OK, RET_OOM);
|
||||
|
||||
return RET_OK;
|
||||
}
|
||||
ret_t str_append_json_bool_pair(str_t* str, const char* key, bool_t value) {
|
||||
return_value_if_fail(str != NULL && key != NULL, RET_BAD_PARAMS);
|
||||
|
||||
return_value_if_fail(str_append_json_str(str, key) == RET_OK, RET_OOM);
|
||||
return_value_if_fail(str_append_char(str, ':') == RET_OK, RET_OOM);
|
||||
return_value_if_fail(str_append(str, value ? "true" : "false") == RET_OK, RET_OOM);
|
||||
|
||||
return RET_OK;
|
||||
}
|
@ -204,6 +204,71 @@ ret_t str_append_char(str_t* str, char c);
|
||||
*/
|
||||
ret_t str_append_int(str_t* str, int32_t value);
|
||||
|
||||
/**
|
||||
* @method str_append_double
|
||||
* 追加一个浮点数。
|
||||
* @param {str_t*} str str对象。
|
||||
* @param {const char*} format 格式。
|
||||
* @param {double} value 要追加的浮点数。
|
||||
*
|
||||
* @return {ret_t} 返回RET_OK表示成功,否则表示失败。
|
||||
*/
|
||||
ret_t str_append_double(str_t* str, const char* format, double value);
|
||||
|
||||
/**
|
||||
* @method str_append_json_str
|
||||
* 追加一个字符串,字符串前后加英文双引号,字符串本身的双引号被转义为\"。
|
||||
* @param {str_t*} str str对象。
|
||||
* @param {const char*} json_str 待追加的字符串。
|
||||
*
|
||||
* @return {ret_t} 返回RET_OK表示成功,否则表示失败。
|
||||
*/
|
||||
ret_t str_append_json_str(str_t* str, const char* json_str);
|
||||
|
||||
/**
|
||||
* @method str_append_json_int_pair
|
||||
* 追加int格式的json键值对。
|
||||
* @param {str_t*} str str对象。
|
||||
* @param {const char*} key 键。
|
||||
* @param {int32_t} value 值。
|
||||
*
|
||||
* @return {ret_t} 返回RET_OK表示成功,否则表示失败。
|
||||
*/
|
||||
ret_t str_append_json_int_pair(str_t* str, const char* key, int32_t value);
|
||||
|
||||
/**
|
||||
* @method str_append_json_str_pair
|
||||
* 追加字符串格式的json键值对。
|
||||
* @param {str_t*} str str对象。
|
||||
* @param {const char*} key 键。
|
||||
* @param {const char*} value 值。
|
||||
*
|
||||
* @return {ret_t} 返回RET_OK表示成功,否则表示失败。
|
||||
*/
|
||||
ret_t str_append_json_str_pair(str_t* str, const char* key, const char* value);
|
||||
|
||||
/**
|
||||
* @method str_append_json_double_pair
|
||||
* 追加doube格式的json键值对。
|
||||
* @param {str_t*} str str对象。
|
||||
* @param {const char*} key 键。
|
||||
* @param {double} value 值。
|
||||
*
|
||||
* @return {ret_t} 返回RET_OK表示成功,否则表示失败。
|
||||
*/
|
||||
ret_t str_append_json_double_pair(str_t* str, const char* key, double value);
|
||||
|
||||
/**
|
||||
* @method str_append_json_double_pair
|
||||
* 追加bool格式的json键值对。
|
||||
* @param {str_t*} str str对象。
|
||||
* @param {const char*} key 键。
|
||||
* @param {bool_t} value 值。
|
||||
*
|
||||
* @return {ret_t} 返回RET_OK表示成功,否则表示失败。
|
||||
*/
|
||||
ret_t str_append_json_bool_pair(str_t* str, const char* key, bool_t value);
|
||||
|
||||
/**
|
||||
* @method str_pop
|
||||
* 删除最后一个字符。
|
||||
|
@ -275,3 +275,26 @@ TEST(Str, from_wstr) {
|
||||
|
||||
str_reset(s);
|
||||
}
|
||||
|
||||
TEST(Str, json) {
|
||||
str_t str;
|
||||
str_t* s = NULL;
|
||||
s = str_init(&str, 100);
|
||||
|
||||
ASSERT_EQ(str_append_char(&str, '{'), RET_OK);
|
||||
ASSERT_EQ(str_append_json_str_pair(&str, "name", "zhangshan"), RET_OK);
|
||||
ASSERT_EQ(str_append_char(&str, ','), RET_OK);
|
||||
|
||||
ASSERT_EQ(str_append_json_int_pair(&str, "age", 100), RET_OK);
|
||||
ASSERT_EQ(str_append_char(&str, ','), RET_OK);
|
||||
|
||||
ASSERT_EQ(str_append_json_double_pair(&str, "weight", 60.5), RET_OK);
|
||||
ASSERT_EQ(str_append_char(&str, ','), RET_OK);
|
||||
|
||||
ASSERT_EQ(str_append_json_bool_pair(&str, "gender", TRUE), RET_OK);
|
||||
ASSERT_EQ(str_append_char(&str, '}'), RET_OK);
|
||||
|
||||
ASSERT_STREQ(str.str, "{\"name\":\"zhangshan\",\"age\":100,\"weight\":60.5000,\"gender\":true}");
|
||||
|
||||
str_reset(s);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user