当前位置: 首页 > news >正文

c++ nlohmann::json 中文支持

c++ nlohmann::json 是当前排名第一人库,但是在解析中文时会有问题

std::string to_utf8(std::wstring& wide_string)
{static std::wstring_convert<std::codecvt_utf8<wchar_t>> utf8_conv;return utf8_conv.to_bytes(wide_string);
}void test_nlohmann() {using namespace nlohmann;nlohmann::json j;// 测试中文和英文提前解析std::string js1 = R"({"key": "中文"})";std::string js2 = R"(Not a json string)";std::wstring js3 = LR"({"name":"中文"})";std::wstring js4 = LR"("中文"})";bool jsonStringIsValid = json::accept(js1);bool notJsonStringIsValid = json::accept(js2);jsonStringIsValid = json::accept(js3);notJsonStringIsValid = json::accept(js4);nlohmann::json jt;jt["age"] = 1;jt["name"] = "张三";auto jt_out = jt.dump();auto dd = utf8_to_ascii(jt["name"].get<std::string>());// 要先转成宽字符std::wstring str_json = LR"({"age":"12","name":"中文"})";try {j = nlohmann::json::parse(str_json);auto str_out = j.dump();if (j.contains("name") && j["name"].is_string()) {std::string value = utf8_to_ascii(j["name"].get<std::string>());int c = 0;}}catch (nlohmann::json::parse_error& ex) {std::string what = ex.what();}// 生成带中文的测试json j2;std::wstring ws = L"中文";j2["id"] = 123;j2["encoded"] = CW2A(ws.c_str(), CP_UTF8);std::string out = j2.dump();int c = 0;
}

这样测试成功。

http://www.lryc.cn/news/171760.html

相关文章:

  • vue3 | defineExpose的使用
  • PaddleSeg学习3——使用PP-LiteSeg模型对道路进行分割
  • 时序数据库的关键技术点总结
  • 【ROS】机器人使用Nomachine进行远程控制
  • Jmeter系列-定时器Timers的基本介绍(11)
  • 【华为OD机试python】求满足条件的最长子串的长度【2023 B卷|100分】
  • iOS技术博主指南:填写苹果应用上架中的隐私政策信息
  • Spring事件机制之ApplicationEvent
  • 【操作系统笔记】内存寻址
  • webpack自定义loader解析指定后缀名文件
  • 基于Kintex UltraScale系列FPGA KU060/KU115高性能PCIe数据预处理载板(5GByte/s带宽)
  • Cesium 地球(2)-瓦片创建
  • Selenium-介绍下其他骚操作
  • 【C++从0到王者】第三十一站:map与set
  • 生产消费者模型的介绍以及其的模拟实现
  • Unity ML-Agents默认接口参数含义
  • 【python数据分析基础】—pandas中loc()与iloc()的介绍与区别
  • ad18学习笔记十一:显示和隐藏网络、铺铜
  • 全国职业技能大赛云计算--高职组赛题卷④(私有云)
  • Camera Tunning ISP 模块面试总结
  • AOSP源码中Android.mk文件中的反斜杠符号(\)的作用和使用
  • 如何查看mysql的存储引擎
  • FPGA project : dht11 温湿度传感器
  • std::string和QString的区别以及互转
  • python+vue理发店管理系统
  • 基于微信小程序的个人健康管理系统的设计与实现(源码+lw+部署文档+讲解等)
  • 共聚焦显微镜在化学机械抛光课题研究中的应用
  • 本地Linux 部署 Dashy 并远程访问
  • 互联网摸鱼日报(2023-09-18)
  • Kotlin中函数的基本用法以及函数类型