본문 바로가기

프로그래밍/Unreal

[UE] FJsonObjectConverter 를 사용한 json string 변환

언리얼에는 UStruct 를 간단히 문자열과 객체간에 변환할 수 있는 유틸리티를 제공하고 있다.

 

모듈추가

Build.cs 파일에 json 관련 모듈을 추가한다.

PrivateDependencyModuleNames.AddRange(
    new string[]
    {
        .
        .
        "Json",
        "JsonUtilities",
        .
        .
    }
);

 

ustruct 선언

USTRUCT(Atomic, BlueprintType, Category="Sample")
struct FMyData
{
    GENERATED_BODY()
    
    UPROPERTY(BlueprintReadOnly, DisplayName="Name")
    FName Name;
    
    UPROPERTY(BlueprintReadOnly, DisplayName="Message")
    FString Message;
}

USTRUCT(Atomic, BlueprintType, Category="Sample")
struct FMyMessages
{
    GENERATED_BODY()
    
    UPROPERTY(BlueprintReadOnly, DisplayName="Messages")
    TArray<FMyData> Messages;
}

 

UStruct to JsonString

// 구조체 값 할당
FMyMessages Messages;
FMyData Data1, Data2;
Data1.Name = "chance";
Data1.Message = "hello";

Data2.Name = "chance";
Data2.Message = "world";

Messages.Add(Data2);
Messages.Add(Data1);


// 구조체를 json string 으로 변환
FString JsonString;
FJsonObjectConverter::UStructToJsonObjectString(Messages, JsonString);

 

JsonString to UStruct

FMessages Messages;
FJsonObjectConverter::JsonObjectStringToUStruct(JsonString, &Messages);