声明:所有权利保留。
转载必须说明出处:http://blog.csdn.net/cartzhang/article/details/43794409
Json的Writer博客地址:
http://blog.csdn.net/cartzhang/article/details/41009343 [UE4的Json读写方式<一>](http://blog.csdn.net/cartzhang/article/details/41009343)
## 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);
}
}
}
}
~~~
代码不严谨,但是是个样子。
### 三、结果截图
![](https://box.kancloud.cn/2016-05-05_572b007b1d07f.jpg)
================
若有问题,请随时联系!
感谢浏览!
- 前言
- UE4在VS2013中各个编译配置代表意义
- UE4的JSON读写方式&lt;一&gt;
- UE4.5.0的Kinect插件(Plugin)&lt;一&gt;
- UE4.5.0的Kinect插件(Plugin)---插件使用说明&lt;二&gt;
- UE4的JSON读写方式&lt;二&gt;
- 热烈庆祝UE4完全免费Free---GitHub上源码的关联方法
- Kinect舒适区范围--UE4 的Blueprint测试范例
- UE4制作插件的插件神器pluginCreator
- 美轮美奂宇宙星空制作神器Spacescape
- OCulus Rift 游戏开发六原则
- 给虚幻4添加内存跟踪功能