UE4 Json读写+Json与FString互转

原创文章,转载请注明出处。

UE4 Json读写+Json与FString互转

  • 一.读Json格式数据
  • 二.写Json格式数据到本地文件中
  • 三>JsonObject转成FSrtring
  • 四>FString转成JsonObject

一.读Json格式数据

先看json文件是什么样子的

{
	"data": [
		"\\UserResourceLibary\\ImportMovie\\456.mp4",
		"\\UserResourceLibary\\ImportMovie\\葛洲坝.mp4"
	]
}

读的代码,我将里面的data读成一个数组
GetArrayField类似的方法有很多,比如GetObjectField/GetBoolField/GetStringField等

TArray<TSharedPtr<FJsonValue>> arrValue;
TSharedPtr<FJsonObject> rootObject = MakeShareable(new FJsonObject());
FString sJsonPath = TEXT("D:\\GSPWorkSpacePath\\GSPP_TEMP_WORKSPACEPATH\\ABD869614245EAE984EA53A9E6E0092C\\gameres.json");

if (FPaths::FileExists(sJsonPath))
{
	FString fileStr = TEXT("");
	FFileHelper::LoadFileToString(fileStr, *sJsonPath);//1>将文件转成UE4的FString
	TSharedRef<TJsonReader<>> jsonReader = TJsonReaderFactory<>::Create(fileStr);
	if (FJsonSerializer::Deserialize(jsonReader, rootObject))//将FString格式化成Json格式
	{
		//GetArrayField类似的方法有很多,比如GetObjectField/GetBoolField/GetStringField等
		auto existArrayData = rootObject->GetArrayField("data");
		arrValue.Append(existArrayData);
	}
}

二.写Json格式数据到本地文件中

先看写完后的json文件是什么样子的

{
	"data": [
		"\\UserResourceLibary\\ImportMovie\\456.mp4",
		"\\UserResourceLibary\\ImportMovie\\葛洲坝.mp4"
	]
}

写的代码,我将里面的data读成一个数组
1>新建一个FJsonObject
2>调用你想入的Json的格式 方法有SetArrayField/SetObjectField/SetBoolField/SetStringField等

bool UUtilsLibrary::WriteUserLibaryImportJson(int32 Type, TArray<TSharedPtr<FJsonValue>>& Data)
{
	TSharedPtr<FJsonObject> rootObject = MakeShareable(new FJsonObject());
	rootObject->SetArrayField("data", Data);
	FString JsonStr = TEXT("");
	TSharedRef<TJsonWriter<>> Writer = TJsonWriterFactory<>::Create(&JsonStr);
	FJsonSerializer::Serialize(rootObject.ToSharedRef(), Writer);
	FString JsonPath = TEXT("D:\\GSPWorkSpacePath\\GSPP_TEMP_WORKSPACEPATH\\ABD869614245EAE984EA53A9E6E0092C\\gameres.json");
	bool WriteJson = FFileHelper::SaveStringToFile(JsonStr, *JsonPath);
	if (!WriteJson)
	{
		FMessageDialog::Open(EAppMsgType::Ok, FText::FromString(TEXT("写入Json失败!")));
	}
	return WriteJson;
}

三>JsonObject转成FSrtring

TSharedPtr<FJsonObject> JsonObject;
bool bIsOk = FJsonSerializer::Deserialize(JsonReader, JsonObject);

FString JsonStr = TEXT("");
TSharedRef<TJsonWriter<>> Writer = TJsonWriterFactory<>::Create(&JsonStr);
FJsonSerializer::Serialize(JsonObject.ToSharedRef(), Writer);

四>FString转成JsonObject

TSharedRef<TJsonReader<TCHAR>> JsonReader = TJsonReaderFactory<TCHAR>::Create(Response->GetContentAsString());
TSharedPtr<FJsonObject> JsonObject;
bool bIsOk = FJsonSerializer::Deserialize(JsonReader, JsonObject);

谢谢,创作不易,大侠请留步… 动起可爱的双手,来个关注再走呗
ღ( ´・ᴗ・` )比心<( ̄︶ ̄)>

你可能感兴趣的:(UE4,UE5,UE4Json读写,UE4Json与FString,Json与FString转换)