MOD aaa-12 修改返回值json格式
SOL 修改返回值json格式 修改人:zhangliang 检视人:zhangliang
This commit is contained in:
parent
ebc8d47cf0
commit
878377d04e
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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_ */
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue