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字符串
相关推荐
炸膛坦客8 小时前
单片机/C/C++八股:(二十六)IIC 专题(I²C)---- 上集
c语言·c++·单片机
旖-旎8 小时前
LeetCode 518:零钱兑换||(完全背包)—— 题解
c++·算法·leetcode·动态规划·背包问题
Henry Zhu1239 小时前
C++中的特殊成员函数与智能指针
c++
_wyt00111 小时前
多重背包问题详解
c++·背包dp
Ljwuhe12 小时前
C++——多态
开发语言·c++
越甲八千12 小时前
STL stack为何没有迭代器
c++
从零开始的代码生活_14 小时前
C++ 继承详解:访问控制、对象模型、菱形继承与设计取舍
开发语言·c++·后端·学习·算法
云小逸14 小时前
【C++ 第七阶段:模板、泛型编程与工程综合详解】
开发语言·c++
GIS阵地15 小时前
QgsSingleBandPseudoColorRenderer 完整详解(QGIS 3.40.13 C++)
开发语言·前端·c++·qt·qgis
王维同学15 小时前
[原创][Windows C++]LSA 认证、安全与通知包的注册表枚举
c++·windows·安全