Имам следния проблем
Имам този JSON стринг
GeSHi (Javascript):
{
"program": {
"destination": "400",
"function": {
"value1": "123",
"value2": "123"
}
}
}
Трябва от този код като се получи да се извика функция и да й се предадът двете променливи
Успях да подкарам обръщането на абикновенни променливи в JSON стринг и обратно, но сега как да се извика функцията следкато се получи и се обърне пак в стойности
GeSHi (C):
#include <jansson.h>
#include <string.h>
#include "util.h"
int main()
{
/*
{
"program": {
"destination": "400",
"function": {
"value1": "123",
"value2": "123"
}
}
}
*/
/*generate this string*/
char *resultz;
json_t *root, *rootz, *computer_listing;
computer_listing = json_object();
json_object_set_new(computer_listing, "varible1", json_string("STX"));
json_object_set_new(computer_listing, "varible2", json_string("STlX"));
root = json_object();
json_object_set_new(root, "destination", json_string("400"));
json_object_set_new(root, "Function", computer_listing);
rootz = json_object();
json_object_set_new(rootz, "DX57", root);
resultz = json_dumps(rootz, 0);
/* The idea is that this message came from somewhere else */
const char *msg =
"{\"program\": {\n"
" \"destination\": 400,\n"
" \"function\": {\n"
" \"value1\": 123,\n"
" \"value2\": 123\n"
" }\n"
" }\n"
"}\n";
int destination, value1, value2, result;
json_t *msg_j;
json_error_t err;
msg_j = json_loads(msg, 0, &err);
if (!msg_j) {
fprintf(stderr, "%s\n", err.text);
return 1;
}
result = json_unpack_ex(msg_j, &err, JSON_STRICT, "{s:{s:i, s:{s:i, s:i}}}"
, "program", "destination", &destination
, "function", "value1", &value1, "value2", &value2);
json_decref(msg_j);
if (result) {
fprintf(stderr, "%s\n", err.text);
return 1;
}
printf("Success!\ndestination: %i, value1: %i, value2: %i\n", destination
, value1
, value2
);
return 0;
return 0;
}
Горното го написах използвайки библиотеката JANSSON