UE4 C++将Json数据写入目标字符串

代码示例:

cpp 复制代码
FString PropertyResString;

TSharedRef<TJsonWriter<TCHAR, TCondensedJsonPrintPolicy<TCHAR>>> Writer =
    TJsonWriterFactory<TCHAR, TCondensedJsonPrintPolicy<TCHAR>>::Create(&PropertyResString);

Writer->WriteObjectStart();    // 写 {
Writer->WriteValue("Name", "ChatGPT");  // 写 "Name":"ChatGPT"
Writer->WriteValue("Age", 3);             // 写 "Age":3
Writer->WriteObjectEnd();                  // 写 }

Writer->Close();

UE_LOG(LogTemp, Log, TEXT("JSON Result: %s"), *PropertyResString);

最后,PropertyResString 会是:

cpp 复制代码
{"Name":"ChatGPT","Age":3}

再提一句这里有个写入策略供JSON 写入器(TJsonWriter)选择

写入策略类型 描述
TCondensedJsonPrintPolicy<TCHAR> 紧凑格式,减少空格、换行,单行输出
TPrettyJsonPrintPolicy<TCHAR> 美化格式,带缩进和换行,便于阅读

如果我们选择TPrettyJsonPrintPolicy写入策略的话,PropertyResString 会是:

cpp 复制代码
{
    "Name": "ChatGPT",
    "Age": 3
}

主要流程如下:

  1. 准备JSON写入目标字符串

    这里假定已经定义了 FString PropertyResString;,用于存储最终写入的JSON数据。

  2. 调用工厂函数创建写入器
    TJsonWriterFactory::Create 创建一个写入器,绑定在 PropertyResString,之后所有写入行为都写进这个字符串。

  3. 调用写入函数 WriteObjectStart()

    • WriteObjectStart() 是写入器类里的方法,用于写入 { ,表示JSON对象开始。
    • 紧跟着可以调用WriteValue()WriteObjectEnd()等方法,写完整个对象。
  4. 写完以后需要调用 Writer->Close() 来结束写入(用户代码中通常要写这步)

    • 这段代码片段没给出,但在UE文档里建议写完数据后调用。
    • Close()会把缓存的内容最终写入字符串。
代码部分 功能解释
TSharedRef<TJsonWriter<...>> Writer 声明了一个非空JSON写入器智能引用
TJsonWriterFactory<...>::Create(&PropertyResString) 工厂方法,创建写入器并绑定字符串输出
WriteObjectStart() 写入 {,开始一个新的JSON对象
TCondensedJsonPrintPolicy 紧凑格式输出,避免无用空白字符和换行
PropertyResString 用于存放生成的JSON字符串
相关推荐
浪浪小洋1 小时前
c++ qt课设定制
开发语言·c++
charlie1145141911 小时前
嵌入式C++工程实践第16篇:第四次重构 —— LED模板,从通用GPIO到专用抽象
c语言·开发语言·c++·驱动开发·嵌入式硬件·重构
handler012 小时前
Linux: 基本指令知识点(2)
linux·服务器·c语言·c++·笔记·学习
ZC跨境爬虫2 小时前
3D 地球卫星轨道可视化平台开发 Day7(AI异步加速+卫星系列精简+AI Agent自动评论)
前端·人工智能·3d·html·json
ID_180079054733 小时前
淘宝 API 上货 / 商品搬家 业务场景实现 + JSON 返回示例
前端·javascript·json
香蕉鼠片4 小时前
MFC是什么
c++·mfc
心态与习惯4 小时前
Julia 初探,及与 C++,Java,Python 的比较
java·c++·python·julia·比较
techdashen5 小时前
Go 标准库 JSON 包迎来重大升级:encoding/json/v2 实验版来了
开发语言·golang·json
小欣加油5 小时前
leetcode2078 两栋颜色不同且距离最远的房子
数据结构·c++·算法·leetcode·职场和发展
我真不是小鱼5 小时前
cpp刷题打卡记录30——轮转数组 & 螺旋矩阵 & 搜索二维矩阵II
数据结构·c++·算法·leetcode