wenbo2005.online

学习记录 / Arduino 与 ESP

Arduino 接收修复函数

Arduino 与 ESP2024-11-06

改函数解决Arduino接收Json数据缺少双引号问题

调用发送:接收数据后,用String 变量接收函数的返回值,结果将所有键值变成字符串类型

String MyFixJSON(const String& input)
{
    String output = input;

    // 确保所有值被双引号包围
    int valueStart = output.indexOf(":") + 1;
    while (valueStart != 0) {
        if (output.charAt(valueStart) != '"') {
            output = output.substring(0, valueStart) + "\"" + output.substring(valueStart);
        }

        int valueEnd = output.indexOf(",", valueStart);
        if (valueEnd == -1) valueEnd = output.indexOf("}", valueStart);

        if (output.charAt(valueEnd - 1) != '"') {
            output = output.substring(0, valueEnd) + "\"" + output.substring(valueEnd);
        }

        valueStart = output.indexOf(":", valueEnd) + 1;
    }

    // 确保 JSON 字符串以 '}' 结尾
    if (output.charAt(output.length() - 1) != '}') {
        output += "}";  // 如果没有闭合大括号,添加一个
    }

    return output;
}