You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unreal Engine C++中如何将JsonObject转换为JSON字符串?

将Unreal的FJsonObject转换为JSON字符串(C++)

嘿,刚好我在UE C++开发里折腾过一模一样的需求!你已经通过FJsonObjectConverter::UStructToJsonObject把自定义结构体转成了TSharedPtr<FJsonObject>,接下来用Unreal自带的序列化工具就能轻松把它变成合法的JSON字符串,完全不用手动拼接踩坑~

完整实现代码

// 先初始化你的结构体并转成JsonObject
FGURaaSDataStruct tObj = FGURaaSDataStruct();
TSharedPtr<FJsonObject> jsonObject = FJsonObjectConverter::UStructToJsonObject<FGURaaSDataStruct>(tObj);

// 用来存储最终JSON字符串的变量
FString JsonOutputString;

// 创建JSON写入器,默认生成紧凑格式的JSON
TSharedRef<TJsonWriter<>> JsonWriter = TJsonWriterFactory<>::Create(&JsonOutputString);

// 执行序列化操作,把JsonObject转成字符串
if (FJsonSerializer::Serialize(jsonObject.ToSharedRef(), JsonWriter))
{
    // 序列化成功,现在JsonOutputString就是你要的结果
    UE_LOG(LogTemp, Log, TEXT("生成的JSON:%s"), *JsonOutputString);
}
else
{
    UE_LOG(LogTemp, Warning, TEXT("JSON序列化失败"));
}

关键细节说明

  • 格式化JSON:如果想要生成带缩进、可读性更强的格式化JSON,只需要把写入器换成带打印策略的版本:
    TSharedRef<TJsonWriter<>> JsonWriter = TJsonWriterFactory<TCHAR, TPrettyJsonPrintPolicy<TCHAR>>::Create(&JsonOutputString);
    
  • 必要头文件:记得在你的cpp文件顶部包含这些头文件,不然会编译报错:
    #include "Serialization/JsonSerializer.h"
    #include "Serialization/JsonWriter.h"
    // 还有你的结构体头文件,比如"GURaaSDataStruct.h"
    
  • 反向转换:如果之后需要把JSON字符串转回结构体,用FJsonObjectConverter::JsonObjectToUStruct就能搞定,和正向转换一样省心。

内容的提问来源于stack exchange,提问作者user3488393

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:51:06