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

View File

@ -13,7 +13,8 @@
#include "../web_config/auth_parameters.h" #include "../web_config/auth_parameters.h"
#include "natconfig.h" #include "natconfig.h"
#define RET_CODE_LEN 16
#define RET_MSG_LEN 128
#define CONFIG_INIT_ARRAY \ #define CONFIG_INIT_ARRAY \
{\ {\
@ -224,5 +225,15 @@ struct _config_service {
typedef struct _config_service config_service_t; 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_ */ #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_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_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); s2j_struct_get_basic_element(ip_config, json_obj, int, prefixlen);
strncpy(config_buff->ifname, ip_config->ifname, INTERFACE_NAMSIZ - 1); 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)); 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); config_buff = rpc_new0(ip_config_t, iCount);
conf_type = rpc_new0(uint, 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)); 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, pArrayItem, int, config_type);
s2j_struct_get_basic_element(ip_config, json_obj, string, ifname); s2j_struct_get_string_element(ip_config, pArrayItem, ifname, INTERFACE_NAMSIZ);
s2j_struct_get_basic_element(ip_config, json_obj, int, family); s2j_struct_get_basic_element(ip_config, pArrayItem, int, family);
s2j_struct_get_basic_element(ip_config, json_obj, string, ipaddr); s2j_struct_get_string_element(ip_config, pArrayItem, ipaddr, DOT_IP_STR);
s2j_struct_get_basic_element(ip_config, json_obj, int, prefixlen); s2j_struct_get_basic_element(ip_config, pArrayItem, int, prefixlen);
strncpy(config_buff[*cnt].ifname, ip_config->ifname, INTERFACE_NAMSIZ - 1); strncpy(config_buff[*cnt].ifname, ip_config->ifname, INTERFACE_NAMSIZ - 1);
config_buff[*cnt].family = (uchar)ip_config->family; config_buff[*cnt].family = (uchar)ip_config->family;
@ -174,16 +174,14 @@ ret_code ip_config_format_json(ip_config_t *config_buff,
{ {
ip_config_string_t tem_buff = {0}; ip_config_string_t tem_buff = {0};
ip_config_string_t *ip_config = &tem_buff; ip_config_string_t *ip_config = &tem_buff;
//cJSON *json_obj = NULL;
char *json_ip; char *json_ip;
ip_config->family = AF_INET; ip_config->family = AF_INET;
ip_config->prefixlen = config_buff->prefixlen; ip_config->prefixlen = config_buff->prefixlen;
strncpy(ip_config->ifname, config_buff->ifname, INTERFACE_NAMSIZ - 1); strncpy(ip_config->ifname, config_buff->ifname, INTERFACE_NAMSIZ - 1);
strncpy(ip_config->ipaddr, inet_ntoa(config_buff->prefix), DOT_IP_STR - 1); strncpy(ip_config->ipaddr, inet_ntoa(config_buff->prefix), DOT_IP_STR - 1);
/* create Student JSON object */
s2j_create_json_obj(json_obj); s2j_create_json_obj(json_obj);
if(json_obj == NULL) 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, string, ipaddr);
s2j_json_set_basic_element(json_obj, ip_config, int, prefixlen); s2j_json_set_basic_element(json_obj, ip_config, int, prefixlen);
json_ip = cJSON_PrintUnformatted(json_obj); *outlen = cm_format_data(RET_OK, json_obj, output);
*outlen = strlen(json_ip) + 1;
memcpy(output, json_ip, *outlen);
free(json_ip);
cJSON_Delete(json_obj);
return RET_OK; return RET_OK;
} }
ret_code ip_config_format_json_array(ip_config_t *config_buff, 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 tem_buff = {0};
ip_config_string_t *ip_config = &tem_buff; ip_config_string_t *ip_config = &tem_buff;
cJSON *json_array = NULL; cJSON *json_array = NULL;
//cJSON *json_obj = NULL;
char *json_ip;
int i; int i;
json_array = cJSON_CreateArray(); 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->ifname, config_buff[i].ifname, INTERFACE_NAMSIZ - 1);
strncpy(ip_config->ipaddr, inet_ntoa(config_buff[i].prefix), DOT_IP_STR - 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); s2j_create_json_obj(json_obj);
if(json_obj == NULL) 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); 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); *outlen = cm_format_data(RET_OK, json_array, output);
cJSON_Delete(json_array);
return RET_OK; return RET_OK;
} }