[Mongoose]json相关API介绍

常用函数

获取一个字符串值

char *mg_json_get_str(struct mg_str json, const char *path)

获取一个bool值

bool mg_json_get_bool(struct mg_str json, const char *path, bool *v)

获取一个浮点数

bool mg_json_get_num(struct mg_str json, const char *path, double *v)

获取一个整形

long mg_json_get_long(struct mg_str json, const char *path, long dflt)

获取一个json子串

备注:toklen是子串的长度,返回值是子串开始位置

int mg_json_get(struct mg_str json, const char *path, int *toklen)

关于path描述

就是json子key的描述,以”$”开头,以.分割 下面举例

{
    "code": 200,
    "reason": "success",
    "data": {
        "targetList": [
            {
                "ips": "172.20.52.10-172.20.54.20",
                "ports": "0-65535",

            },
			            {
                "ips": "172.20.52.10-172.20.54.20",
                "ports": "0-65535",

            }

        ],
        "processList": [
            "chrome.exe",
            "edge.exe"
        ],
        "serverUrl": "172.20.50.126:8080"
    }
}

1、获取一个string类型值

auto serverUrl = mg_json_get_str(json_root, "$.data.serverUrl");

2、获取ips

//第一个
auto serverUrl = mg_json_get_str(json_root, "$.data.targetList[0].ips");
//第二个
auto serverUrl = mg_json_get_str(json_root, "$.data.targetList[1].ips");

mg_json没有直接获json数组对象个数,可以通过以下类似的代码枚举所有数组元素

//获取processList
for (int i = 0; i < 100; i++)
{
	char js_path[100];
	sprintf(js_path, "$.data.processList[%d]", i);
	auto value = mg_json_get_str(json_root, js_path);
	if (value)
	{
		_trace("%s:%s\n", js_path, value);
		CA2W wstr(value);
		m_driver_config.m_exe_name_list.push_back(wstr.m_psz);
	}
	else
	{
		break;
	}
}

1 Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

© 2024 迷 - IP: 18.226.150.13