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

注意字符串大小写

相关推荐
烟花落o32 分钟前
C++ 从 C 到进阶 ②:引用、inline 、nullptr
c++·引用·inline·nullptr·c++入门
liulilittle36 分钟前
MOE路由:路由(logits: top-k/8)
c++·人工智能·算法·机器学习·llm
旖旎夜光39 分钟前
LeetCode 11:盛最多水的容器(双指针问题) —— 题解
数据结构·c++·算法·leetcode·双指针
我不会插花弄玉3 小时前
15.map,set下:AVL树,红黑树和map,set的封装【由浅入深-C++】
c++·stl
hold?fish:palm3 小时前
20 旋转图像
c++·算法·leetcode
此生决int4 小时前
深入理解C++系列(10)——lsit
开发语言·c++
NoteStream4 小时前
【C语言基础】分支和循环(上)
c语言·开发语言·c++·经验分享·笔记·算法·c#
2401_827499994 小时前
C++(黑马)05-提高编程
java·开发语言·c++
hold?fish:palm5 小时前
链表的基本原理和实现(C++版本)
数据结构·c++·链表
jufeng13075 小时前
【系列:MiniKV 原理剖析 · 第 5 篇】
linux·网络·c++·软件工程