게임엔진(GameEngine)/Unreal4
배열 타입 Json 읽어들이기 [Json Array To Unreal Engine [C++] ]
3DMP
2022. 8. 31. 11:56
I have data endpoint which returns a json like [{"Name": "Alex", "Age": 24}]
now if i Deserialize this as an JsonObject It fails as it's an array with no name how can I get the data inside the array?
Here is an snippet from my code. Should help.
TSharedRef<TJsonReader<>> reader = TJsonReaderFactory<>::Create(data);
TArray< TSharedPtr<FJsonValue> > ue4ObjectArray;
successful = FJsonSerializer::Deserialize(reader, ue4ObjectArray);
TArray<TSharedPtr<FJsonValue>> objArray = JsonObject->GetArrayField(TEXT("AwesomeStructs"));
for (int32 i = 0; i < objArray.Num(); i++)
{
TSharedPtr<FJsonValue> value = objArray[i];
TSharedPtr<FJsonObject> json = value->AsObject();
FVector AwesomeVector = ParseAsVector(json, FString("AwesomeVector"));
bool AwesomeBoolean = json->GetBoolField(TEXT("AwesomeBoolean"));
float AwesomeFloat = json->GetNumberField(TEXT("AwesomeFloat"));
int32 AwesomeInteger = json->GetNumberField(TEXT("AwesomeInteger"));
FRotator AwesomeRotator = ParseAsRotator(json, FString("AwesomeRotator"));
FAwesomeStruct AwesomeStruct = FAwesomeStruct::BuildAwesomeStruct(
AwesomeVector,AwesomeBoolean,AwesomeFloat,AwesomeInteger,AwesomeRotator
);
AwesomeStructs.Push(AwesomeStruct);
}
}
Array 읽기
TArray<TSharedPtr<FJsonValue>> Array = JsonObject->GetArrayField(TEXT("FieldName"));
또는
const TArray<TSharedPtr<FJsonValue>>* Value;
if(JsonObject->TryGetArrayField(TEXT("FieldName"), Value)) {
// When Parsing Success.
} else {
// When Parsing Failed.
}
ref : https://ballbot.tistory.com/45
ref : https://www.reddit.com/r/unrealengine/comments/shpgbw/json_array_to_unreal_engine_c_or_varest/
ref : https://gist.github.com/hanzochang/07eba255ce0d1695582a92e98e973200
반응형