原创文章,转载请注明出处。
先看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文件是什么样子的
{
"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;
}
TSharedPtr<FJsonObject> JsonObject;
bool bIsOk = FJsonSerializer::Deserialize(JsonReader, JsonObject);
FString JsonStr = TEXT("");
TSharedRef<TJsonWriter<>> Writer = TJsonWriterFactory<>::Create(&JsonStr);
FJsonSerializer::Serialize(JsonObject.ToSharedRef(), Writer);
TSharedRef<TJsonReader<TCHAR>> JsonReader = TJsonReaderFactory<TCHAR>::Create(Response->GetContentAsString());
TSharedPtr<FJsonObject> JsonObject;
bool bIsOk = FJsonSerializer::Deserialize(JsonReader, JsonObject);
谢谢,创作不易,大侠请留步… 动起可爱的双手,来个关注再走呗
ღ( ´・ᴗ・` )比心<( ̄︶ ̄)>