如何将JsonObject转换为JSON字符串?

3

我正在尝试将一个结构体及其包含的数据转换为合法的JSON字符串。我在虚幻引擎中使用C++。

要转换的结构体:

USTRUCT()
struct DATALOGGING_API FGURaaSDataStruct
{
    GENERATED_USTRUCT_BODY()
public:
    UPROPERTY()
        FString id_session = "test";
    UPROPERTY()
        TArray<FData> data;
};

用于上一个结构体的结构体:

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;
};

当前方法: (JsonObject - UE4 特定代码)
FGURaaSDataStruct tObj = FGURaaSDataStruct();
    TSharedPtr<FJsonObject> jsonObject = FJsonObjectConverter::UStructToJsonObject<FGURaaSDataStruct>(tObj);

这里生成的JsonObject包含创建Json字符串所需的所有信息,理想情况下我希望有一种简单的方法将此JsonObject转换为JSON字符串。
1个回答

7
这将把Json序列化为输出字符串,然后您可以自由地对其进行任何操作。
更多信息,请参见在虚幻引擎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);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接