use*_*393 3 c++ json struct unreal-engine4
我正在尝试将结构及其包含的数据转换为合法的 JSON 字符串。我在虚幻引擎中使用 C++ 工作。
我正在尝试转换的结构:
USTRUCT()
struct DATALOGGING_API FGURaaSDataStruct
{
GENERATED_USTRUCT_BODY()
public:
UPROPERTY()
FString id_session = "test";
UPROPERTY()
TArray<FData> data;
};
Run Code Online (Sandbox Code Playgroud)
上一个结构体中使用的结构体:
USTRUCT()
struct DATALOGGING_API FData
{
GENERATED_USTRUCT_BODY()
public:
UPROPERTY()
FString data;
UPROPERTY()
FString tag1;
UPROPERTY()
FString tag2;
UPROPERTY()
FString tag3;
UPROPERTY()
FString tag4;
UPROPERTY()
TArray<FString> additional_tags;
UPROPERTY()
FString time;
};
Run Code Online (Sandbox Code Playgroud)
目前的方法:(JsonObject - UE4特定代码)
FGURaaSDataStruct tObj = FGURaaSDataStruct();
TSharedPtr<FJsonObject> jsonObject = FJsonObjectConverter::UStructToJsonObject<FGURaaSDataStruct>(tObj);
Run Code Online (Sandbox Code Playgroud)
此处生成的 JsonObject 包含创建 Json 字符串所需的所有信息,理想情况下,我希望有一种简单的方法将此 JsonObject 转换为 JSON 字符串。
小智 7
这会将 Json 序列化为 OutputString,然后您可以自由地执行您想做的任何操作。
有关更多信息,请参阅在虚幻引擎 4 中使用 Json。
void FStructToJsonString(FStructXXX _myStruct) {
TSharedPtr<FJsonObject> JsonObject = MakeShareable(new FJsonObject);
JsonObject->SetStringField("param1", _myStruct.param1);
JsonObject->SetStringField("param2", _myStruct.param2);
FString OutputString;
TSharedRef< TJsonWriter<> > Writer = TJsonWriterFactory<>::Create(&OutputString);
FJsonSerializer::Serialize(JsonObject.ToSharedRef(), Writer);
UE_LOG(LogTemp, Warning, TEXT("resulting jsonString -> %s"), *OutputString);
}
Run Code Online (Sandbox Code Playgroud)