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;
	}

注意字符串大小写

相关推荐
AI+程序员在路上39 分钟前
Qt6中模态与非模态对话框区别
开发语言·c++·qt
岁忧6 小时前
(LeetCode 面试经典 150 题 ) 11. 盛最多水的容器 (贪心+双指针)
java·c++·算法·leetcode·面试·go
蜉蝣之翼❉11 小时前
CRT 不同会导致 fopen 地址不同
c++·mfc
aramae11 小时前
C++ -- STL -- vector
开发语言·c++·笔记·后端·visual studio
lixzest11 小时前
C++ Lambda 表达式详解
服务器·开发语言·c++·算法
_Chipen12 小时前
C++基础问题
开发语言·c++
灿烂阳光g12 小时前
OpenGL 2. 着色器
c++·opengl
AA陈超13 小时前
虚幻引擎UE5专用服务器游戏开发-20 添加基础能力类与连招能力
c++·游戏·ue5·游戏引擎·虚幻
mit6.82414 小时前
[Meetily后端框架] AI摘要结构化 | `SummaryResponse`模型 | Pydantic库 | vs marshmallow库
c++·人工智能·后端
R-G-B14 小时前
【02】MFC入门到精通——MFC 手动添加创建新的对话框模板
c++·mfc·mfc 手动添加创建新的对话框