Files
MAX_CARLINK_A270S/MXC_A27-PCB4.5-270T/lib/awtk/awtk/src/conf_io
2025-01-21 16:49:37 +08:00
..
2025-01-21 16:49:37 +08:00
2025-01-21 16:49:37 +08:00
2025-01-21 16:49:37 +08:00
2025-01-21 16:49:37 +08:00
2025-01-21 16:49:37 +08:00
2025-01-21 16:49:37 +08:00
2025-01-21 16:49:37 +08:00
2025-01-21 16:49:37 +08:00
2025-01-21 16:49:37 +08:00
2025-01-21 16:49:37 +08:00
2025-01-21 16:49:37 +08:00
2025-01-21 16:49:37 +08:00
2025-01-21 16:49:37 +08:00
2025-01-21 16:49:37 +08:00
2025-01-21 16:49:37 +08:00
2025-01-21 16:49:37 +08:00
2025-01-21 16:49:37 +08:00
2025-01-21 16:49:37 +08:00
2025-01-21 16:49:37 +08:00
2025-01-21 16:49:37 +08:00
2025-01-21 16:49:37 +08:00
2025-01-21 16:49:37 +08:00

conf-io

介绍

为应用程序访问配置文件提供统一的 API不管使用哪种格式除了初始化代码外其它访问配置信息的方式完全一样。

目前支持 INI/JSON/UBJSON。

conf-io 是可选组件,需要自己包含头文件,否则 64 位数据类型会被截断成 32 位的数据。

#include "conf_io/app_conf.h"

初始化需要包含相应的头文件:

#include "conf_io/app_conf_init_json.h"

具体用法请参考 如何存取应用程序的配置信息

直接使用 INI/JSON/UBJSON 的方法

开发者也可以直接使用 INI/JSON/UBJSON 提供的 API 去操作自己的配置文件,可以从文件加载,从内存加载或其它地方加载(实现对于的 data_reader/data_writer 即可)。

key 的规则请参考 如何存取应用程序的配置信息 的第7节。

1. 直接使用 JSON 的示例

test.json 文件内容

{
    "group" : {
        "key" : "value",
        "tom" : {
            "name" : "tom",
            "age" : 100,
            "weight" : 60.5100
        }
    },
    "array" : [
        {
            "name" : "none"
        },
        2,
        3
    ],
    "tom" : {
        "name" : "tom",
        "age" : 100,
        "weight" : 60.5000
    }
}c

示例代码

  object_t* conf = conf_json_load("file://./tests/testdata/test.json", TRUE);

  ASSERT_EQ(conf_obj_save(conf), RET_OK);
  ASSERT_EQ(object_set_prop_str(conf, "tom.name", "tom"), RET_OK);
  ASSERT_EQ(object_set_prop_int(conf, "tom.age", 100), RET_OK);
  ASSERT_EQ(object_set_prop_float(conf, "tom.weight", 60.5), RET_OK);

  ASSERT_STREQ(object_get_prop_str(conf, "tom.name"), "tom");
  ASSERT_EQ(object_get_prop_int(conf, "tom.age", 0), 100);
  ASSERT_EQ(object_get_prop_float(conf, "tom.weight", 0), 60.5);

  ASSERT_EQ(conf_obj_save(conf), RET_OK);

  ASSERT_STREQ(object_get_prop_str(conf, "group.key"), "value");
  ASSERT_EQ(object_remove_prop(conf, "group.key"), RET_OK);
  ASSERT_EQ(object_get_prop_str(conf, "group.key"), (char*)NULL);

  OBJECT_UNREF(conf);

从内存加载:

#include "tkc/data_reader_mem.h"
...
  object_t* conf = NULL;
  char url[MAX_PATH + 1]; 
  data_reader_mem_build_url(data, size, url);
  conf = conf_json_load(url, FALSE);
  ASSERT_NE(conf, (object_t*)NULL);

更多用法请参考tests/conf_json_test.cc