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

注意字符串大小写

相关推荐
小尧嵌入式6 分钟前
QT软件开发知识点流程及记事本开发
服务器·开发语言·数据库·c++·qt
冷崖25 分钟前
单例模式-创建型
c++·单例模式
明洞日记43 分钟前
【VTK手册024】高效等值面提取:vtkFlyingEdges3D 详解与实战
c++·图像处理·vtk·图形渲染
遥望九龙湖1 小时前
3.析构函数
开发语言·c++
qq_479875431 小时前
systemd-resolved.service实验实战3
linux·服务器·c++
闻缺陷则喜何志丹1 小时前
【图论 组合数学】P10912 [蓝桥杯 2024 国 B] 数星星|普及+
c++·数学·蓝桥杯·图论
Jeff-Nolan1 小时前
C++运算符重载
java·开发语言·c++
YouEmbedded1 小时前
解码智能指针
开发语言·c++·unique_ptr·shared_ptr·auto_ptr·weak_ptr
神仙别闹1 小时前
基于QT(C++)实现(图形界面)连连看
java·c++·qt
NZT-481 小时前
C++基础笔记(三)链表list
c++·笔记·链表