代码示例:
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
}
主要流程如下:
-
准备JSON写入目标字符串
这里假定已经定义了
FString PropertyResString;,用于存储最终写入的JSON数据。 -
调用工厂函数创建写入器
TJsonWriterFactory::Create创建一个写入器,绑定在PropertyResString,之后所有写入行为都写进这个字符串。 -
调用写入函数
WriteObjectStart()WriteObjectStart()是写入器类里的方法,用于写入{,表示JSON对象开始。- 紧跟着可以调用
WriteValue()、WriteObjectEnd()等方法,写完整个对象。
-
写完以后需要调用
Writer->Close()来结束写入(用户代码中通常要写这步)- 这段代码片段没给出,但在UE文档里建议写完数据后调用。
Close()会把缓存的内容最终写入字符串。
| 代码部分 | 功能解释 |
|---|---|
TSharedRef<TJsonWriter<...>> Writer |
声明了一个非空JSON写入器智能引用 |
TJsonWriterFactory<...>::Create(&PropertyResString) |
工厂方法,创建写入器并绑定字符串输出 |
WriteObjectStart() |
写入 {,开始一个新的JSON对象 |
TCondensedJsonPrintPolicy |
紧凑格式输出,避免无用空白字符和换行 |
PropertyResString |
用于存放生成的JSON字符串 |