这是改变恢复机制的json文件的例子 

//写入

TSharedPtr<FJsonObject> RootObject = MakeShareable(newFJsonObject);
TArray< TSharedPtr<FJsonValue> > PackagesThatCanBeRestored;
TSharedPtr<FJsonObject> EntryObject = MakeShareable(new FJsonObject);
EntryObject->SetStringField(TEXT("PackagePathName"), TEXT("Temp/Untitled_1"));
EntryObject->SetStringField(TEXT("AutoSavePath"), TEXT("Temp/Untitled_1_Auto1.umap"));
TSharedPtr<FJsonValue> EntryValue = MakeShareable(new FJsonValueObject(EntryObject));
PackagesThatCanBeRestored.Add(EntryValue);
RootObject->SetBoolField(TEXT("RestoreEnabled"), true);
RootObject->SetArrayField(TEXT("Packages"), PackagesThatCanBeRestored);
constFStringFilename = FPaths::GameSavedDir() /TEXT("Autosaves") /TEXT("PackageRestoreData.json");
FArchive* constFileAr = IFileManager::Get().CreateFileWriter(*Filename, FILEWRITE_EvenIfReadOnly);
if (FileAr)
{
     TSharedRef<TJsonWriter< TCHAR, TPrettyJsonPrintPolicy<TCHAR> >> Writer = TJsonWriterFactory< TCHAR, TPrettyJsonPrintPolicy<TCHAR> >::Create(FileAr);  
     FJsonSerializer::Serialize(RootObject.ToSharedRef(), Writer);
     FileAr->Close();
}
// 读取本地json文件
       const FString Filename = FPaths::GameSavedDir() / TEXT("Autosaves") / TEXT("PackageRestoreData.json");
       FArchive* const FileAr = IFileManager::Get().CreateFileReader(*Filename);
       bool bJsonLoaded = false;
       TSharedPtr<FJsonObject> RootObject = MakeShareable(new FJsonObject);
       {
              TSharedRef<TJsonReader<TCHAR>> Reader = TJsonReaderFactory<TCHAR>::Create(FileAr);
              bJsonLoaded = FJsonSerializer::Deserialize(Reader, RootObject);
              FileAr->Close();
       }
       TMap<FString, FString> PackagesThatCanBeRestored;
       TArray< TSharedPtr<FJsonValue> > PackagesThatCanBeRestoredArray = RootObject->GetArrayField(TEXT("Packages"));
       int32 TiRen = RootObject->GetIntegerField(TEXT("TiRen"));
       for (auto It = PackagesThatCanBeRestoredArray.CreateConstIterator(); It; ++It)
       {
              TSharedPtr<FJsonObject> EntryObject = (*It)->AsObject();
              const FString PackagePathName = EntryObject->GetStringField(TEXT("PackagePathName"));
              const FString AutoSavePath = EntryObject->GetStringField(TEXT("AutoSavePath"));
              PackagesThatCanBeRestored.Add(PackagePathName, AutoSavePath);
       }
       for (auto It = PackagesThatCanBeRestored.CreateConstIterator(); It; ++It)
       {
              if (TiRen == 1)
              {
                     EditorStartupMap = FPaths::GameContentDir() / TEXT("Autosaves") / It->Value;
              }
              else
              {
                     EditorStartupMap = AutoSaveUtils::GetAutoSaveDir() / It->Value;
              }
       }

ue4 C++ json数据的读写的更多相关文章

  1. [笔记] Python 中JSON数据的读写

    前言 JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换语言 JSON是独立于语言的文本格式, JSON 数据格式与语言无关 JSO ...

  2. [UE4]解析json数据

    正常的json对象是可以使用单引号的,但是在UE4中的json解析,不能如下使用单引号: {‘name’:'张三'} 而是要使用双引号写成: {"name":"张三&qu ...

  3. C++解析Json,使用JsonCpp读写Json数据

    JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式.通常用于数据交换或存储. JsonCpp是一个基于C++语言的开源库,用于C++程序的J ...

  4. 【UE4 C++】 解析与构建 Json 数据

    准备条件 Json 格式 { "Players":[ { "Name": "Player1", "health": 20 ...

  5. UE4 的json读写方式

    转自:http://blog.csdn.net/cartzhang/article/details/41009343 JSON 的解析有很多开源库.UE4的JSON使用在代码的Public->S ...

  6. UE4的JSON读写方式&lt;一&gt;

    声明:全部权利保留. 转载必须说明出处:http://blog.csdn.net/cartzhang/article/details/41009343 UE4的Json的解析博客地址: http:// ...

  7. UE4的JSON读写方式<一>

    声明:所有权利保留. 转载必须说明出处:http://blog.csdn.net/cartzhang/article/details/41009343 UE4的Json的解析博客地址: http:// ...

  8. UE4的JSON读写方式<二>

    声明:所有权利保留. 转载必须说明出处:http://blog.csdn.net/cartzhang/article/details/43794409 Json的Writer博客地址: http:// ...

  9. pythhon_如何读写json数据

    案例: 在web应用中常常用到json数据进行传输数据,本质上是字典类型数据转换成字符串,通过字符串进行网页传输,然后把接收到的字符串转换成字典类似数据 需求:实现字典转换成字符串,字符串转换成字典数 ...

随机推荐

  1. Intellij IDEA的下载安装与破解

    一,下载与安装 1.官网下载:https://www.jetbrains.com/idea/ 2.选择Windows对应版本安装 二,破解 1.下载破解补丁:http://idea.lanyus.co ...

  2. 如何在基于Bytom开发过程中使用Bigchaindb

    上期我们讲了在基于比原开发过程中链外存储可以用分布式存储IPFS,这期我们还给大家介绍另外一种链外存储的解决方案.bigchaindb:https://www.bigchaindb.com,下面我们讲 ...

  3. Learning-Python【28】:基于TCP协议通信的套接字

    什么是 Socket Socket 是应用层与 TCP/IP 协议通信的中间软件抽象层,它是一组接口.在设计模式中,Socket 其实就是一个门面模式,它把复杂的 TCP/IP 协议族隐藏在 Sock ...

  4. css技巧小计

    今天又学到两招,一招是把大框写相对定位,然后小框写绝对定位,运用top和left,想去哪里去哪里 另一招是边框渐变色,微信小程序,边框写渐变我没成功,然后大佬支招写一个大框,相对定位,然后设背景渐变色 ...

  5. Rancher 容器管理平台-免费视频培训-链接及内容-第三季

    Rancher 容器管理平台-免费视频培训-链接及内容 第三季 第5期-2018年05月10日-持续集成的容器化实践回放网址:http://www.itdks.com/liveevent/detail ...

  6. 安卓constraintLayout中app:srcCompat设置的图片显示不出来

    使用 app:srcCompat 的时候 引入的图片显示不出来的解决方案 首先查看的你的Activity 继承的是那个Activity 如果是继承AppcompatActivity  使用 Image ...

  7. Vnpy二次开发应用所需图标

    在针对Vnpy二次开发时,很多窗口中需要使用到“小图标” 给大家分享一个UI的专业图标网,上面资源齐全. https://www.iconfont.cn/collections?personal=1

  8. 主机连接虚拟机redis 服务器

    1. centos 虚拟机安装redis sudo yum install epel-release sudo yum update sudo yum install redis sudo syste ...

  9. sql 同一个字段在查询结果中出现两次

    SELECT GET .daytime,    GET.data AS GET,    xh.data AS xh FROM    ( SELECT daytime, SUM ( get_sum ) ...

  10. 解决SpringMVC+Thymeleaf中文乱码

    乱码效果截图 解决办法:在org.thymeleaf.templateresolver.ServletContextTemplateResolver和org.thymeleaf.spring5.vie ...