当前位置: 首页 > news >正文

【UE5 C++课程系列笔记】32——读Json文件并解析

前言 

在上一篇(【UE5 C++课程系列笔记】31——创建Json并保存为文件)中我们已经将Json存储到Json文件中,本篇会通过读取该Json文件来解析Json。

步骤

1. 定义一个函数用于读取Json,这里函数命名为“ReadJson”

函数实现如下,首先加载Json文件从而获得Json字符串

通过Json字符串构建Json对象

解析Json对象中的数字、字符串、Json对象和数组类型

完整代码:

void ASampleJson::ReadJson()
{
	//从文件中获取Json字符串
	FString JsonFilePath = FPaths::ProjectSavedDir() / TEXT("GoodJson.json");
	FString JsonString = TEXT("");
	FFileHelper::LoadFileToString(JsonString, *JsonFilePath);

	//通过Json字符串构建Json对象
	TSharedPtr<FJsonObject> JsonObject;
	TSharedRef<TJsonReader<TCHAR>> JsonReader = TJsonReaderFactory<TCHAR>::Create(JsonString);

	//解析Json
	bool IsDeserialize = FJsonSerializer::Deserialize(JsonReader, JsonObject);  //判断能否反序列化
	if (IsDeserialize) 
	{
		//解析数字
		int32 CodeNum = JsonObject->GetNumberField(TEXT("Code"));

		//解析字符串
		FString Message = JsonObject->GetStringField(TEXT("Message"));

		//解析JsonObject
		TSharedPtr<FJsonObject> Server = JsonObject->GetObjectField(TEXT("Server"));
		FString ServerName = Server->GetStringField(TEXT("ServerName"));
		FString ServerVersion = Server->GetStringField(TEXT("ServerVersion"));

		//解析数组
		TArray<TSharedPtr<FJsonValue>> MyArray = JsonObject->GetArrayField(TEXT("MyArray"));
		for (auto& Ele : MyArray)
		{
			int32 Id = Ele->AsNumber();
		}

		//解析数组嵌套Json
		TArray<TSharedPtr<FJsonValue>> Workers = JsonObject->GetArrayField(TEXT("Workers"));
		for (auto& Ele : Workers)
		{
			TSharedPtr<FJsonObject> Worker = Ele->AsObject();
			int32 ID = Worker->GetIntegerField(TEXT("ID"));
			FString Name = Worker->GetStringField(TEXT("Name"));
			int32 Age = Worker->GetIntegerField(TEXT("Age"));
		}
	}
}

相关文章:

  • 网站如何安装源码广州seo网络推广员
  • 网站搭建开发短链接在线生成器
  • 网站开发保密协议范本下载网络营销方法有几种类型
  • 哪一个景区网站做的最成熟微信朋友圈广告
  • 如何对网站进行推广重庆百度整站优化
  • 网站建设结课论文网络优化大师
  • 【GoLang】etcd初始化客户端时不会返回错误怎么办
  • Vue3命名规范指南
  • 数字内容体验进阶优化策略
  • OP2177运算放大器:高性能模拟信号处理的关键元件
  • 使用el-tab 实现两个tab切换
  • MCP协议java开发的servers,已开源
  • Linux 基础入门指南:用户管理、基本命令(一)
  • Golang标准库——runtime
  • Linux命令-iotop
  • 【Java】网络编程
  • Python爬虫教程008:BeautifulSoup库的基本介绍
  • jQuery 遍历
  • 浙江大学朱霖潮研究员:《人工智能重塑科学与工程研究》以蛋白质结构预测为例|附PPT下载方法
  • Unity网络开发基础 (3) Socket入门 TCP同步连接 与 简单封装练习
  • java_高并发之SpringBoot中实现一个通用Excel导出功能
  • 适配 AGP8.5 版本,版本依赖管理(五)
  • 新版本Xmind结合DeepSeek快速生成美丽的思维导图
  • hi3516cv610_new_defconfig内容
  • 异步函数 async/await的认识与学习
  • Windows cursor集成powershell(conda)