MXOS JSON Parsing APIs
MXOS supports JSON format parsing for easy data transfer.
⊕ mxos-demos SDK를 참조한다.
1. JSON Parsing API List
JSON Parsign API | Descrtiption |
json_object_get | Incremental json_object reference count |
json_object_put | Decrement reference count of json_object |
json_object_is_type | Query if the json object is a given type |
json_object_get_type | Get the type of json object instance |
json_object_to_json_string | Convert a Json object instance from a type to a character |
json_object_new_object | Create a Json object |
json_object_get_object | Get a type hash table of a Json object |
json_object_object_add | Add a field name for a json object of the specified type |
json_object_object_get | Get a json object associated with a given field name |
json_object_object_del | Delete the given json object field |
json_object_new_array | Create a json object of type json_object_array |
json_object_get_array | Get a list of arrays of json_object_array type json objects |
json_object_array_length | Get the length of a json_object_array type json object |
json_object_array_add | Add an element to the end of a json_type_array type json object |
json_object_array_put_idx | Inserts or replaces an element of the specified index in the array, which is a json object of type json_type_array |
json_object_array_get_idx | Gets the element of the specified index in the array, which is a json object of type json_type_array |
json_object_new_boolean | Create a json object of type json_object_boolean |
json_object_get_boolean | Get the boolean value of a json object |
json_object_new_int | Create an empty json object of type json_object_int |
json_object_new_int64 | Create a json object of type json_object_int, 64 bits |
json_object_get_int | Get the integer value of a json object, type: json_object_int |
json_object_get_int64 | Get the integer value of a json object, type: json_object_int, 64 bits |
json_object_new_double | creates a json object of type json_object_double |
json_object_get_double | Get the value of a json object, type: json_object_double |
json_object_new_string | Create a json object of type json_object_string |
json_object_new_string_len: | creates a json object of the specified length, type: json_object_string |
json_object_get_string | Get the string value of the json object, object type: json_object_string |
json_object_to_json_string_ex | get the memory buffer information of the json object |
json_object_get_string_len | Get the string length of the json object, object type: json_object_string |
2. Example
Example implementation: Output the parameters of the RGB light in a json format, parse the variables in the Json string, and print. code show as below:
json_op.c
#include "mxos.h"
#include "json_c/json.h"
#include "micokit_ext.h"
#define os_json_log(M, ...) custom_log("JSON", M, ##__VA_ARGS__)
void test_jsonc()
{
/*control info*/
bool rgb_sw = false;
int rgb_hue = 0;
int rgb_sat = 0;
int rgb_bri = 0;
/*1:construct json object*/
struct json_object *recv_json_object=NULL;
recv_json_object=json_object_new_object();
struct json_object *device_object=NULL;
device_object=json_object_new_object();
json_object_object_add(device_object, "Hardware", json_object_new_string("MiCOKit3288"));
json_object_object_add(device_object, "RGBSwitch", json_object_new_boolean(false));
json_object_object_add(device_object, "RGBHues", json_object_new_int(0));
json_object_object_add(device_object, "RGBSaturation", json_object_new_int(100));
json_object_object_add(device_object, "RGBBrightness", json_object_new_int(100));
json_object_object_add(recv_json_object,"device_info",device_object);/*one pair K-V*/
os_json_log("%s",json_object_to_json_string(recv_json_object));
/*recv_json_object*/
/*
{"device_info":
{ "Hardware": "MiCOKit3288",
"RGBSwitch": false,
"RGBHues": 0,
"RGBSaturation": 100,
"RGBBrightness": 100
}
}
*/
/*2:parse json object*/
json_object* parse_json_object=json_object_object_get(recv_json_object,"device_info");
/*get data one by one*/
json_object_object_foreach(parse_json_object, key, val) {
if(!strcmp(key, "RGBSwitch")){
rgb_sw = json_object_get_boolean(val);
os_json_log("rgb_sw=%d",rgb_sw);
}
else if(!strcmp(key, "RGBHues")){
rgb_hue = json_object_get_int(val);
os_json_log("rgb_hue=%d",rgb_hue);
}
else if(!strcmp(key, "RGBSaturation")){
rgb_sat = json_object_get_int(val);
os_json_log("rgb_sat=%d",rgb_sat);
}
else if(!strcmp(key, "RGBBrightness")){
rgb_bri = json_object_get_int(val);
os_json_log("rgb_bri=%d",rgb_bri);
}
}
/*3:parse finished,free memory*/
json_object_put(recv_json_object);/*free memory*/
recv_json_object=NULL;
/*4:operate rgb*/
os_json_log("control rgb led now");
rgb_led_init();
hsb2rgb_led_open(rgb_hue, rgb_sat, rgb_bri);/*turn red*/
}
int application_start( void )
{
test_jsonc();
return 0;
}
이상 끝 —