UE开发随笔------json与struct互相转换(FJsonObjectConverter)

UStruct定义:

cpp 复制代码
USTRUCT()
struct FHeartBeatMsg
{
	GENERATED_BODY()
public:
	UPROPERTY()
	FString pcCode = TEXT("");
	UPROPERTY()
	FString deviceType = TEXT("");
	UPROPERTY()
	FString messageType = TEXT("");
	UPROPERTY()
	FString content = TEXT("");
};

使用相应转换函数需要添加相关插件模块,Json、JsonUtilities:

cpp 复制代码
		PrivateDependencyModuleNames.AddRange(
			new string[]
			{
				"CoreUObject",
				"Engine",
				"Json",
                "JsonUtilities"
			}
			);
相关头文件引入:
cpp 复制代码
#include "JsonObjectConverter.h"
一、json转换为struct

1、json字符串转换为struct

cpp 复制代码
    //FString JsonStr
	FHeartBeatMsg sRecMsg;
	FJsonObjectConverter::JsonObjectStringToUStruct<FHeartBeatMsg>(JsonStr, &sRecMsg, 0, 0);

2、json object转换为struct

cpp 复制代码
	FHeartBeatMsg sRecMsg;
	FJsonObjectConverter::JsonObjectToUStruct<FHeartBeatMsg>(RootObj.ToSharedRef(), &sRecMsg, 0, 0);

附加:json字符串转json object

cpp 复制代码
	//FString JsonStr
    TSharedRef<TJsonReader<TCHAR>> JsonReader = TJsonReaderFactory<TCHAR>::Create(JsonStr);
	TSharedPtr<FJsonObject> RootObj = MakeShareable(new FJsonObject);
	if (!FJsonSerializer::Deserialize(JsonReader, RootObj))
	{
		return;
	}
二、struct转换为json字符串
cpp 复制代码
	FHeartBeatMsg sHeartBeatMsg;
	sHeartBeatMsg.pcCode = TEXT("123");
	sHeartBeatMsg.content = TEXT("test");;

	FString ContentJsonString;
	bool bRet = FJsonObjectConverter::UStructToJsonObjectString(FHeartBeatMsg::StaticStruct(), &sHeartBeatMsg, ContentJsonString, 0, 0);

	if (!bRet)
	{
		//UE_LOG
		return;
	}

注意字符串大小写

相关推荐
WL学习笔记11 分钟前
vector模拟实现
c++
蜗牛一步步往上爬3 小时前
第十六章 C++语言在深度学习中的应用
开发语言·c++·深度学习
wo_jack6 小时前
C++ 入门笔记(十六):第16课 vector 模拟实现十问十答 —— 从三指针到迭代器失效
c++·后端·面试·stl·vector
D e re k ZH7 小时前
C++ 标准库算法全景指南
数据结构·c++·算法
雪落漂泊8 小时前
C++算法 二分查找篇(上)
开发语言·c++·算法
不会算法的笨小孩9 小时前
异常的使用以及会出现的问题
开发语言·c++·c++11·异常
Hhy_110711 小时前
《C++深度解构06》手撕 string —— 从底层内存管理到深浅拷贝彻底吃透
c语言·开发语言·c++·学习·visual studio
青少儿编程课堂12 小时前
蓝桥杯青少组图形化省考报名倒计时·全国青少年信息素养大赛·电子学会图形化考级:校园黑白棋人机对战解析
c++·python·算法·bfs·信息学竞赛
YSL07012412 小时前
C++基础
开发语言·c++
eggwyw13 小时前
关于C++为什么不加入垃圾回收机制解析
开发语言·c++