UE Json读写
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);
}