1json数据格式简介(JaveScript Object Notation)
创新互联公司-专业网站定制、快速模板网站建设、高性价比辉县网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式辉县网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖辉县地区。费用合理售后完善,十年实体公司更值得信赖。
随着JaveScript的流行和互联网应用,JavaScript里面最强大的
数据类型Object,使用起来及其方便,可以满足所有的数据存储.
为了能更好的做数据交换,设计了JSON协议,能够将JavaScript里面
的Object与Json的转换,Object对象转换成Json数据以后,方便
传输和存储,json变为Object方便对象重建.
Object又叫做表 存放的就是 key:value name:小明
key可以是字符串和数据
value可以是数组,字符串,bool,数组多个value,object
JSON是完全独立于语言的文本格式,易于阅读与编写以及解析.
2使用c语言开源库mjson 解析json
#include "mjson/json.h" /* { //root "k_num" : 123, "k_str" : "hello", "k_logic" : true, "k_null" : null, "k_array" : [1,"hello","2"], "weap_object" : { "default":"putongzidan", } } */ int main(int argc, char*argv[]) { //首先建一个空的Object json_t* root = json_new_object(); //new一个数字 //把这个元素 加到object里 json_t* k_num = json_new_number("123"); json_insert_pair_into_object(root,"k_num",k_num); json_t* uname = json_new_string("hello"); json_insert_pair_into_object(root, "k_str", uname); json_t* logic = json_new_true(); json_insert_pair_into_object(root, "k_logic", logic); json_t* knull = json_new_null(); json_insert_pair_into_object(root, "k_null", knull); //array 数组 json_t *man_array = json_new_array(); json_insert_pair_into_object(root, "k_array", man_array); //给数组插入数组 json_t* tmp1 = json_new_number("1"); json_t* tmp2 = json_new_string("hello"); json_insert_child(man_array, tmp1); json_insert_child(man_array, tmp2); //end //嵌套一个Object json_t* weap_object = json_new_object(); json_insert_pair_into_object(root, "weap_object", weap_object); //嵌套的object 里面在加元素 tmp1 = json_new_string("putongzidan"); json_insert_pair_into_object(weap_object, "default", tmp1); //end //编码成string text指向这个字符串内存地址 char* text = NULL; json_tree_to_string(root, &text); //释放 这个root printf("json endcode :\n%s\n",text); //json字符串 变成json对象数 读json json_free_value(&root); root = NULL; json_parse_document(&root,text);//从json文本来生成json对象数 free(text); //解码这个字符串 json_t* user_name = json_find_first_label(root,"k_str"); json_t* user = user_name->child;//获取value printf("name type%d:%s\n", user->type, user->text); //解码array里的 json_t* user_array = json_find_first_label(root, "k_array"); json_t* arrat1 = user_array->child->child; printf("name type%d:%s\n", arrat1->type, arrat1->text); //获取数组 下一个next json_t* arrat2 = arrat1->next; printf("name type%d:%s\n", arrat2->type, arrat2->text); //解码object里的 json_t* user_object = json_find_first_label(root, "weap_object"); json_t* user_object_child = user_object->child->child; arrat2 = user_object_child->child; printf("name type%d:%s\n", arrat2->type, arrat2->text); //还有在释放一次 因为这个是 生成的对象数 json_free_value(&root); system("pause"); return 0; }