UE4的JSON读写方式<二>
2024-08-31 20:55:51
声明:所有权利保留。
转载必须说明出处:http://blog.csdn.net/cartzhang/article/details/43794409
Json的Writer博客地址:
http://blog.csdn.net/cartzhang/article/details/41009343 UE4的Json读写方式<一>
UE4 的json读写方式
一、UE4的Json解析代码
有网友说UE4的解析有问题,解析出错。个人觉得应该是Json格式有问题。或解析的对象不正确,对象或数组用来对应的解析方式来解析的。
解析方式有两种:类名为:FJsonSerializer,头文件名称为JsonSerializer.h
template <class CharType>
static bool Deserialize( const TSharedRef< TJsonReader<CharType> >& Reader, TArray< TSharedPtr<FJsonValue> >& OutArray )
{
StackState State;
if ( !Deserialize( Reader, /*OUT*/State ) )
{
return false;
} if ( State.Object.IsValid() )
{
return false;
} OutArray = State.Array;
return true;
} template <class CharType>
static bool Deserialize( const TSharedRef< TJsonReader<CharType> >& Reader, TSharedPtr<FJsonObject>& OutObject )
{
StackState State;
if ( !Deserialize( Reader, /*OUT*/State ) )
{
return false;
} if ( !State.Object.IsValid() )
{
return false;
} OutObject = State.Object;
return true;
}
可以看出,第一个是针对数组的,第二个是针对Json对象的。请注意分别。
二、样例代码
CPP中包含头文件#include "Json.h"。
void ATestPhysics1Character::JsonDeserialize()
{
FString JsonValue = "[{\"author\":\"4446545646544\"},{\"name\":\"jack\"}]"; FString JsonStr;
TArray<TSharedPtr<FJsonValue>> JsonParsed;
TSharedRef< TJsonReader<TCHAR> > JsonReader = TJsonReaderFactory<TCHAR>::Create(JsonValue); bool BFlag = FJsonSerializer::Deserialize(JsonReader, JsonParsed);
if (BFlag)
{
int ArrayNumber = JsonParsed.Num();
if (ArrayNumber == 2)
{
FString FStringAuthor = JsonParsed[0]->AsObject()->GetStringField("author");
if (GEngine)
{
FString TmpString = "author :" + FStringAuthor;
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TmpString);
}
FString FStringName = JsonParsed[1]->AsObject()->GetStringField("name");
if (GEngine)
{
FString TmpString = "name :" + FStringName;
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TmpString);
}
}
}
}
代码不严谨,但是是个样子。
三、结果截图
================
若有问题,请随时联系!
感谢浏览!
最新文章
- 对偶SVM
- Typescript基础类型
- java web学习总结(三) -------------------TOMCAT使用帮助(二)
- PHP数组内容不重复组合排列算法
- AOP报错:Caused by: java.lang.IllegalArgumentException: error at ::0 can&#39;t find referenced pointcut
- 深入理解css系列:meta标签
- sql server 2008 R2 不允许保存更改,您所做的更改要求删除并重新创建以下表
- C# 编码转换 UTF8转GB2312 GB2312转UTF8
- 关于android获得设备宽高
- PHP中的替代语法
- xceed wpf datagrid
- Esper
- [Netty] - Netty入门(最简单的Netty客户端/服务器程序)
- 部署Asp.net Core 项目发生502.5 或者500 没有其他提示信息
- Google免费GPU使用教程
- Spark入门(1-5)Spark统一了TableView和GraphView
- [小技巧]ASP.NET Core中如何预压缩静态文件
- 洛谷P4640 王之财宝 [BJWC2008] 数论
- scrapy入门:安装scrapy
- [UE4]Text Box