You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C++中解析JSON URL,替换en-us为ja-jp并获取日文页面标题

C++ 基于cpprestsdk实现JSON URL批量处理方案

功能需求

  • 解析接口返回的JSON数据,仅修改articleUrl字段中的en-us为ja-jp,其余格式的URL不做改动
  • URL处理完成后,在对应层级新增urltitle字段存储处理后的日文页面URL
  • 最终输出标准JSON格式的处理结果

规则说明

仅识别替换articleUrl中的en-us字符串,不含该字段的URL(比如https://support.example.com/help/xxxx格式)直接保留原值存入urltitle即可

完整实现代码

#include <iostream>
#include <cpprest/http_client.h>
#include <cpprest/json.h>
using namespace web;
using namespace web::http;
using namespace web::http::client;
using namespace utility;

// 字符串子串替换工具函数
string_t replace_substr(string_t input, const string_t& from, const string_t& to) {
    size_t start_pos = 0;
    while((start_pos = input.find(from, start_pos)) != string_t::npos) {
        input.replace(start_pos, from.length(), to);
        start_pos += to.length();
    }
    return input;
}

int main(int argc, char** argv) {
    try {
        // 请求接口获取原始JSON数据
        http_client client(U("http://api.example.com/"));
        http_response response = client.request(methods::GET, U("/get")).get();
        if (response.status_code() != status_codes::OK) {
            std::cerr << "接口请求失败,状态码:" << response.status_code() << std::endl;
            return 1;
        }
        json::value root = response.extract_json().get();

        // 遍历处理所有kbArticles条目
        auto& value_arr = root.as_array();
        for (auto& item : value_arr) {
            auto& kb_arr = item.at(U("kbArticles")).as_array();
            for (auto& kb_item : kb_arr) {
                string_t original_url = kb_item.at(U("articleUrl")).as_string();
                // 仅替换en-us为ja-jp
                string_t processed_url = replace_substr(original_url, U("en-us"), U("ja-jp"));
                // 新增urltitle字段
                kb_item[U("urltitle")] = json::value::string(processed_url);
            }
        }

        // 输出处理后的JSON,可自行修改为写入本地文件的逻辑
        std::wcout << root.serialize() << std::endl;

    } catch (const std::exception& e) {
        std::cerr << "处理出错:" << e.what() << std::endl;
        return 1;
    }
    return 0;
}

编译参考

  • Windows环境可通过vcpkg安装cpprestsdk依赖后直接编译
  • Linux环境可先安装libcpprest-dev包,编译命令示例:g++ main.cpp -o url_processor -lcpprest -lssl -lcrypto -lboost_system

内容的提问来源于stack exchange,提问作者Evening_cry_007

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 01:15:01