声明:所有权利保留。

转载必须说明出处: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);
}
}
}
}

代码不严谨,但是是个样子。

三、结果截图


================

若有问题,请随时联系!

感谢浏览!

最新文章

  1. 对偶SVM
  2. Typescript基础类型
  3. java web学习总结(三) -------------------TOMCAT使用帮助(二)
  4. PHP数组内容不重复组合排列算法
  5. AOP报错:Caused by: java.lang.IllegalArgumentException: error at ::0 can&#39;t find referenced pointcut
  6. 深入理解css系列:meta标签
  7. sql server 2008 R2 不允许保存更改,您所做的更改要求删除并重新创建以下表
  8. C# 编码转换 UTF8转GB2312 GB2312转UTF8
  9. 关于android获得设备宽高
  10. PHP中的替代语法
  11. xceed wpf datagrid
  12. Esper
  13. [Netty] - Netty入门(最简单的Netty客户端/服务器程序)
  14. 部署Asp.net Core 项目发生502.5 或者500 没有其他提示信息
  15. Google免费GPU使用教程
  16. Spark入门(1-5)Spark统一了TableView和GraphView
  17. [小技巧]ASP.NET Core中如何预压缩静态文件
  18. 洛谷P4640 王之财宝 [BJWC2008] 数论
  19. scrapy入门:安装scrapy
  20. [UE4]Text Box

热门文章

  1. iOS 友盟分享
  2. SQL-android uri的使用(转载)
  3. js进阶 14-9 ajax事件有哪些
  4. 数值溢出(arithmetic overflow)问题与解决方案
  5. 1.2 Use Cases中 Metrics官网剖析(博主推荐)
  6. Fiddler代理配置
  7. 【Educational Codeforces Round 33 D】Credit Card
  8. Java Web学习总结(8)——使用Cookie进行会话管理
  9. UVA 488 - Triangle Wave 水~
  10. 第一个hello word 驱动载入失败--------