MOD aaa-12 修改返回值json格式

SOL  修改返回值json格式
修改人:zhangliang
检视人:zhangliang
This commit is contained in:
zhanglianghy 2019-08-27 11:36:32 +08:00
parent ebc8d47cf0
commit 878377d04e
3 changed files with 80 additions and 48 deletions

View File

@ -9,39 +9,72 @@
#include "rpc.h"
#include "configm.h"
config_service_t g_config_service[] = CONFIG_SERVICE_ARRAY;
config_init_t g_config_init[] = CONFIG_INIT_ARRAY;
void test_big_data(rpc_conn *conn, pointer input, int input_len, void* data) {
char buf[input_len];
memcpy(buf, input, input_len);
buf[input_len] = '\0';
printf("get data is %s\n", buf);
//sleep(15);
rpc_return_null(conn);
int cm_format_data(ret_code ret_code, cJSON *item_obj, char *output)
{
int str_len = 0;
char *ret_char = NULL;
config_result_t tem_buff = {0};
config_result_t *config_ret = &tem_buff;
snprintf(config_ret->resultCode, RET_CODE_LEN - 1, "%d", ret_code);
config_ret->message = (char *)rpc_code_format(ret_code);
s2j_create_json_obj(json_obj);
if(json_obj == NULL)
{
return 0;
}
s2j_json_set_basic_element(json_obj, config_ret, string, resultCode);
s2j_json_set_basic_element(json_obj, config_ret, string, message);
cJSON_AddItemToObject(json_obj, "data", item_obj);
ret_char = cJSON_PrintUnformatted(json_obj);
str_len = strlen(ret_char);
strncpy(output, ret_char, CM_BUFF_SIZE - 1);
rpc_free(ret_char);
cJSON_Delete(json_obj);
return (str_len + 1);
}
void cm_return(rpc_conn *conn, ret_code err_code, char* err_message)
{
cJSON *res;
char *ret_char = NULL;
char *null_str = "";
config_result_t tem_buff = {0};
config_result_t *config_ret = &tem_buff;
rpc_log_dbg("error %d:%s\n", err_code, err_message);
res = cJSON_CreateObject();
if(res == NULL)
snprintf(config_ret->resultCode, RET_CODE_LEN - 1, "%d", err_code);
config_ret->message = (char *)rpc_code_format(err_code);
config_ret->data = null_str;
s2j_create_json_obj(json_obj);
if(json_obj == NULL)
{
return;
}
cJSON_AddNumberToObject(res, "error", err_code);
ret_char = cJSON_PrintUnformatted(res);
s2j_json_set_basic_element(json_obj, config_ret, string, resultCode);
s2j_json_set_basic_element(json_obj, config_ret, string, message);
s2j_json_set_basic_element(json_obj, config_ret, string, data);
cJSON_Delete(res);
ret_char = cJSON_PrintUnformatted(json_obj);
rpc_return(conn, ret_char, strlen(ret_char)+1);
rpc_free(ret_char);
cJSON_Delete(json_obj);
return;
}

View File

@ -13,7 +13,8 @@
#include "../web_config/auth_parameters.h"
#include "natconfig.h"
#define RET_CODE_LEN 16
#define RET_MSG_LEN 128
#define CONFIG_INIT_ARRAY \
{\
@ -224,5 +225,15 @@ struct _config_service {
typedef struct _config_service config_service_t;
struct _config_result {
char resultCode[RET_CODE_LEN];
char *message;
char *data;
};
typedef struct _config_result config_result_t;
int cm_format_data(ret_code ret_code, cJSON *json_obj, char *output);
#endif /* RPC_COMMON_H_ */

View File

@ -83,9 +83,9 @@ ret_code ip_config_json_parse(pointer input, uint *conf_type, ip_config_t *confi
}
s2j_struct_get_basic_element(ip_config, json_obj, int, config_type);
S2J_STRUCT_GET_STRING_ELEMENT_N(ip_config, json_obj, ifname, INTERFACE_NAMSIZ);
s2j_struct_get_string_element(ip_config, json_obj, ifname, INTERFACE_NAMSIZ);
s2j_struct_get_basic_element(ip_config, json_obj, int, family);
S2J_STRUCT_GET_STRING_ELEMENT_N(ip_config, json_obj, ipaddr, DOT_IP_STR);
s2j_struct_get_string_element(ip_config, json_obj, ipaddr, DOT_IP_STR);
s2j_struct_get_basic_element(ip_config, json_obj, int, prefixlen);
strncpy(config_buff->ifname, ip_config->ifname, INTERFACE_NAMSIZ - 1);
@ -121,7 +121,7 @@ ret_code ip_config_json_parse_array(pointer input, uint *conf_type,
rpc_log_info("json input:%s \n", cJSON_Print(json_obj));
iCount = cJSON_GetArraySize(json_obj); /*»ñÈ¡Êý×鳤¶È*/
iCount = cJSON_GetArraySize(json_obj);
config_buff = rpc_new0(ip_config_t, iCount);
conf_type = rpc_new0(uint, iCount);
@ -146,11 +146,11 @@ ret_code ip_config_json_parse_array(pointer input, uint *conf_type,
{
memset(ip_config, 0, sizeof(ip_config_string_t));
s2j_struct_get_basic_element(ip_config, json_obj, int, config_type);
s2j_struct_get_basic_element(ip_config, json_obj, string, ifname);
s2j_struct_get_basic_element(ip_config, json_obj, int, family);
s2j_struct_get_basic_element(ip_config, json_obj, string, ipaddr);
s2j_struct_get_basic_element(ip_config, json_obj, int, prefixlen);
s2j_struct_get_basic_element(ip_config, pArrayItem, int, config_type);
s2j_struct_get_string_element(ip_config, pArrayItem, ifname, INTERFACE_NAMSIZ);
s2j_struct_get_basic_element(ip_config, pArrayItem, int, family);
s2j_struct_get_string_element(ip_config, pArrayItem, ipaddr, DOT_IP_STR);
s2j_struct_get_basic_element(ip_config, pArrayItem, int, prefixlen);
strncpy(config_buff[*cnt].ifname, ip_config->ifname, INTERFACE_NAMSIZ - 1);
config_buff[*cnt].family = (uchar)ip_config->family;
@ -174,7 +174,6 @@ ret_code ip_config_format_json(ip_config_t *config_buff,
{
ip_config_string_t tem_buff = {0};
ip_config_string_t *ip_config = &tem_buff;
//cJSON *json_obj = NULL;
char *json_ip;
ip_config->family = AF_INET;
@ -183,7 +182,6 @@ ret_code ip_config_format_json(ip_config_t *config_buff,
strncpy(ip_config->ifname, config_buff->ifname, INTERFACE_NAMSIZ - 1);
strncpy(ip_config->ipaddr, inet_ntoa(config_buff->prefix), DOT_IP_STR - 1);
/* create Student JSON object */
s2j_create_json_obj(json_obj);
if(json_obj == NULL)
{
@ -195,24 +193,18 @@ ret_code ip_config_format_json(ip_config_t *config_buff,
s2j_json_set_basic_element(json_obj, ip_config, string, ipaddr);
s2j_json_set_basic_element(json_obj, ip_config, int, prefixlen);
json_ip = cJSON_PrintUnformatted(json_obj);
*outlen = strlen(json_ip) + 1;
memcpy(output, json_ip, *outlen);
free(json_ip);
cJSON_Delete(json_obj);
*outlen = cm_format_data(RET_OK, json_obj, output);
return RET_OK;
}
ret_code ip_config_format_json_array(ip_config_t *config_buff,
int count, pointer output, int *outlen)
int count, pointer output,
int *outlen)
{
ip_config_string_t tem_buff = {0};
ip_config_string_t *ip_config = &tem_buff;
cJSON *json_array = NULL;
//cJSON *json_obj = NULL;
char *json_ip;
int i;
json_array = cJSON_CreateArray();
@ -230,7 +222,6 @@ ret_code ip_config_format_json_array(ip_config_t *config_buff,
strncpy(ip_config->ifname, config_buff[i].ifname, INTERFACE_NAMSIZ - 1);
strncpy(ip_config->ipaddr, inet_ntoa(config_buff[i].prefix), DOT_IP_STR - 1);
/* create Student JSON object */
s2j_create_json_obj(json_obj);
if(json_obj == NULL)
{
@ -245,12 +236,9 @@ ret_code ip_config_format_json_array(ip_config_t *config_buff,
s2j_json_set_basic_element(json_obj, ip_config, int, prefixlen);
}
json_ip = cJSON_PrintUnformatted(json_array);
*outlen = strlen(json_ip) + 1;
memcpy(output, json_ip, *outlen);
free(json_ip);
cJSON_Delete(json_array);
*outlen = cm_format_data(RET_OK, json_array, output);
return RET_OK;
}