UE Json读写

时间:2025-03-28 17:17:02
public: //修改存档 void UpdateRecordData(FString Culture, float MusicVolume, float SoundVolume, TArray<FString>* RecordDataList); void SlAiJsonHandle::UpdateRecordData(FString Culture, float MusicVolume, float SoundVolume, TArray<FString>* RecordDataList) { //将数据转换为JsonObject TSharedPtr<FJsonObject> JsonObject = MakeShareable(new FJsonObject); TArray<TSharedPtr<FJsonValue>> BaseDataArray; //填充数组1.2.3 TSharedPtr<FJsonObject> CultureObject = MakeShareable(new FJsonObject); CultureObject->SetStringField("Culture", Culture); TSharedPtr<FJsonValueObject> CultureValue = MakeShareable(new FJsonValueObject(CultureObject)); //转换为JsonValue存入 TSharedPtr<FJsonObject> MusicVolumeObject = MakeShareable(new FJsonObject); MusicVolumeObject->SetNumberField("MusicVolume", MusicVolume); TSharedPtr<FJsonValueObject> MusicVolumeValue = MakeShareable(new FJsonValueObject(MusicVolumeObject)); TSharedPtr<FJsonObject> SoundVolumeObject = MakeShareable(new FJsonObject); SoundVolumeObject->SetNumberField("SoundVolume", SoundVolume); TSharedPtr<FJsonValueObject> SoundVolumeValue = MakeShareable(new FJsonValueObject(SoundVolumeObject)); //写入存档名 TArray<TSharedPtr<FJsonValue>> RecordDataArray; for (int i = 0; i < RecordDataList->Num(); ++i) { TSharedPtr<FJsonObject> RecordItem = MakeShareable(new FJsonObject); //转换为JsonValue存入 RecordItem->SetStringField(FString::FromInt(i), (*RecordDataList)[i]); TSharedPtr<FJsonValueObject> RecordDataValue = MakeShareable(new FJsonValueObject(RecordItem)); RecordDataArray.Add(RecordDataValue); //添加进数组 } //添加一个key TSharedPtr<FJsonObject> RecordDataObject = MakeShareable(new FJsonObject); RecordDataObject->SetArrayField("RecordData", RecordDataArray); TSharedPtr<FJsonValueObject> RecordDataValue = MakeShareable(new FJsonValueObject(RecordDataObject)); //添加进数组BaseDataArray BaseDataArray.Add(CultureValue); BaseDataArray.Add(MusicVolumeValue); BaseDataArray.Add(SoundVolumeValue); BaseDataArray.Add(RecordDataValue); JsonObject->SetArrayField("T", BaseDataArray); //将json转为字符串 FString JsonStr; GetFStringInJsonData(JsonObject, JsonStr); //SlAiHelper::Debug(FString("Origin Str : " + JsonStr), ); //去掉多余字符 JsonStr.RemoveAt(0, 8); JsonStr.RemoveFromEnd(FString("}")); //SlAiHelper::Debug(FString("Final Str : " + JsonStr), ); //写入文件 WriteFileWithJsonData(JsonStr, RelativePath, RecordDataFileName); }