-
Notifications
You must be signed in to change notification settings - Fork 306
Description
我将 字符串 和 整数 转换成 json格式,然后用串口发送出去,字符串转换没问题,但整数转换得到的结果,用串口打印 %d 正常,用串口打印 %s 却显示 ld,不知道什么原因造成,而我需要发送的json数据,要能正常显示整数值。
请问如何解决
`
typedef struct
{
char TestString[10];
int TestInt;
}Struct_test;
cJSON struct_to_json_Struct_test(void struct_obj)
{
s2j_create_json_obj(json_obj_);
Struct_test *struct_obj_ = (Struct_test *)struct_obj;
s2j_json_set_basic_element(json_obj_, struct_obj_, string, TestString);
s2j_json_set_basic_element(json_obj_, struct_obj_, int, TestInt);
return json_obj_;
}
void json_to_struct_Struct_test(cJSON json_obj)
{
s2j_create_struct_obj(struct_obj_, Struct_test);
s2j_struct_get_basic_element(struct_obj_,json_obj, string, TestString);
s2j_struct_get_basic_element(struct_obj_,json_obj, int, TestInt);
return struct_obj_;
}
int main(void)
{
static Struct_test _Struct_test =
{
.TestString = "OK",
.TestInt = 123
};
cJSON *p1 = struct_to_json_Struct_test(&_Struct_test);
if(p1 != NULL)
{
char *p2 = cJSON_Print(p1);
if(p2 != NULL)
{
UartPrint("\nThe Json is:\n%s",p2);
Struct_test *converted_obj = json_to_struct_Struct_test(p1);
if (memcmp(&_Struct_test, converted_obj, sizeof(Struct_test)))
{
UartPrint("\nConverted failed!\n");
}
else
{
UartPrint("\nConverted OK!\n");
UartPrint("converted_obj->TestString = %s\n", converted_obj->TestString);
UartPrint("converted_obj->TestInt = %d\n", converted_obj->TestInt);
}
}
}
return 0;
} `
运行结果:
The Json is:
{
"TestString": "OK",
"TestInt": ld
}
Converted OK!
converted_obj->TestString = OK
converted_obj->TestInt = 123