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字符串
相关推荐
Teleger6 小时前
在window上使用c++控制鼠标点击,实现的exe
c++·单片机·计算机外设
June`8 小时前
高并发内存池如何实现
c++·tcmalloc·内存池
ComputerInBook8 小时前
C++ 关键字 constexpr 和 consteval 之注意事项
开发语言·c++·constexpr·consteval
米啦啦.8 小时前
STL(标准模板库)
开发语言·c++·stl
咩咦8 小时前
C++学习笔记08:指针和引用的区别
c++·学习笔记·指针·引用·指针和引用
洛水水8 小时前
【力扣100题】34.二叉搜索树中第K小的元素
c++·算法·leetcode
许长安8 小时前
gRPC Keepalive 机制
c++·经验分享·笔记·rpc
wangjialelele9 小时前
Linux SystemV 消息队列 + 责任链模式:实现客户端消息处理流水线
linux·服务器·c语言·网络·c++·责任链模式
智者知已应修善业9 小时前
51单片机4按键控制共阳LED霓虹灯切换1整体闪烁2流水下3流水上4间隔闪烁】2023-10-27
c++·经验分享·笔记·算法·51单片机
洛水水9 小时前
结构性设计模式详解
c++·设计模式