Build.cs에 Json 모듈을 추가
PublicDependencyModulesNames.AddRange(new string[] { ..., "Json"});
Json 형태
{
"Name": "Ogre",
"HP": 25,
"IsKing": true,
"ItemList": [
"item1",
"item2",
"item3"
]
}
Json 정보 파일에 쓰기
TSharedPtr<FJsonObject> jsonObject = MakeShareable(new FJsonObject());
jsonObject->SetStringField(TEXT("Name"), TEXT("Ogre"));
jsonObject->SetNumberField(TEXT("HP"), 25);
jsonObject->SetBoolField(TEXT("IsKing"), true);
// 배열 설정
TArray<TSharedPtr<FJsonValue>> ItemList;
ItemList.Add(MakeShareable(new FJsonValueString(TEXT("item1"))));
ItemList.Add(MakeShareable(new FJsonValueString(TEXT("item2"))));
ItemList.Add(MakeShareable(new FJsonValueString(TEXT("item3"))));
jsonObject->SetArrayField(TEXT("ItemList"), ItemList);
bool flag = false;
// Json을 문자열로 변환
FString strJson;
TSharedRef<TJsonWriter<>> jsonWriter = TJsonWriterFactory<>::Create(&strJson);
flag = FJsonSerializer::Serialize(jsonObject.ToSharedRef(), jsonWriter);
if (false == flag)
{
// json을 문자열로 변환 실패
return;
}
FString dirPath = FPaths::ProjectPersistentDownloadDir();
FString filePath = FPaths::Combine(dirPath, TEXT("TestJson.json"));
// 문자열 저장
flag = FFileHelper::SaveStringToFile(strJson, *filePath);
if (false == flag)
{
// 저장 실패
return;
}
파일에서 Json 정보 읽기
FString dirPath = FPaths::ProjectPersistentDownloadDir();
FString filePath = FPaths::Combine(dirPath, TEXT("TestJson.json"));
bool flag = false;
// 파일에서 json 스트링을 얻는다
FString strJson;
flag = FFileHelper::LoadFileToString(strJson, *filePath);
if (false == flag)
{
// json 파일읽기 실패
return;
}
// 성공
TSharedRef<TJsonReader<>> jsonReader = TJsonReaderFactory<>::Create(strJson);
// json 스트링을 object로 변환
TSharedPtr<FJsonObject> jsonObject;
flag = FJsonSerializer::Deserialize(jsonReader, jsonObject) && jsonObject.IsValid();
if (false == flag)
{
// 변환 실패
return;
}
// 정보를 추출
FString name = jsonObject->GetStringField(TEXT("Name"));
double hp = jsonObject->GetNumberField(TEXT("HP"));
bool isKing = jsonObject->GetBoolField(TEXT("IsKing"));
// 배열 정보를 얻는다
const TArray<TSharedPtr<FJsonValue>>* jsonValueList;
if (jsonObject->TryGetArrayField(TEXT("itemList"), jsonValueList))
{
// 루프를 돌면서 값을 얻는다
for (const TSharedPtr<FJsonValue>& jsonValue : *jsonValueList)
{
FString item = jsonValue->AsString();
}
}
'Unreal > 기본' 카테고리의 다른 글
[Unreal] SoundCue 출력 (0) | 2024.11.30 |
---|---|
[Unreal] 파이썬 사용 (0) | 2024.11.23 |
[Unreal] Unreal Plugin Language (UPL) (0) | 2024.07.12 |
[Unreal] Android 빌드 설정 (0) | 2024.06.30 |
[Unreal] 에디터에서 클래스 생성시 utf-8로 파일 생성 (0) | 2024.05.04 |