如何将 JsonObject 转换为 JSON 字符串

How can I convert a JsonObject to a JSON String?

本文关键字:JSON 字符串 转换 JsonObject      更新时间:2023-10-16

>我正在尝试将结构及其包含的数据转换为合法的 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 字符串。

这会将 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);
}