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

注意字符串大小写

相关推荐
工业甲酰苯胺1 小时前
实现 json path 来评估函数式解析器的损耗
java·前端·json
程序员龙一3 小时前
C++之static_cast关键字
开发语言·c++·static_cast
奶茶树3 小时前
【C++/STL】map和multimap的使用
开发语言·c++·stl
云知谷4 小时前
【C/C++基本功】C/C++江湖风云录:void* 的江湖传说
c语言·开发语言·c++·软件工程·团队开发
ShineWinsu5 小时前
对于数据结构:堆的超详细保姆级解析—上
数据结构·c++·算法·计算机·二叉树·顺序表·
im_AMBER5 小时前
Leetcode 46
c语言·c++·笔记·学习·算法·leetcode
QX_hao6 小时前
【Go】--文件和目录的操作
开发语言·c++·golang
卡提西亚6 小时前
C++笔记-20-对象特性
开发语言·c++·笔记
三掌柜6667 小时前
C++ 零基础入门与冒泡排序深度实现
java·开发语言·c++
沐怡旸7 小时前
【穿越Effective C++】条款15:在资源管理类中提供对原始资源的访问——封装与兼容性的平衡艺术
c++·面试