Как я могу преобразовать JsonObject в строку JSON?

Я пытаюсь преобразовать структуру и содержащиеся в ней данные в законную строку JSON. Я работаю в Unreal Engine на 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.


person user3488393    schedule 10.01.2018    source источник


Ответы (1)


Это приведет к сериализации Json в OutputString, после чего вы сможете делать все, что захотите.

Дополнительную информацию см. в разделе Использование Json в Unreal Engine 4.

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);
}
person Carles Gutierrez    schedule 16.05.2018