二十一.Json数据的读写
一.了解Json数据的格式
1.Json值
● 数字(整数或浮点数)
● 字符串(在双引号中)
● 逻辑值(true 或 false)
● 数组(在中括号中)
● 对象(在大括号中)
● null
2.常见的Json
格式: "键":值(key:value)
①最简单的Json数据对象
大括号 { } 保存对象
②Json对象作为value
③Json对象数组
中括号 [ ] 保存数组,数组可以包含多个对象
④Json对象数组作为value
二.UE5中通过JsonObject构造Json与序列化
1.构造
FJsonObject 在UE4里表示一个Json对象,用于存储Json数据
①将Json模块导入UE项目名.Bulid.cs中

②声明(初始化)FJsonObject

蓝图与c++对比序列化Json对象


③常见的数据类型作为值储存在JsonObject中(Jsonobject的构造)
④将Json对象作为值储存在JsonObject中(Jsonobject的构造)
⑤将Json对象数组作为值储存在JsonObject中(Jsonobject的构造)
2.序列化JsonObject
格式为固定格式,只要改一下里面的JsonObject即可,在下面的代码指的是:RootJsonObject(Json对象)
注:TJsonWriterFactory是一个接受policy的模版,用于决定Json是如何被打印的。例如,"pretty"模式(易读的格式化),或者"condensed"模式(空白符都被去除掉)。他们对应的名字就是TCondensedJsonPrintPolicy和TPrettyJsonPrintPolicy。

三.JsonObject获取数据的方式
1.判断是否拥有某个字段

2.TryGetXXXFiled





3.GetXXXFiled
GetNumberField(获取浮点型数值) return double,
GetBoolField(获取bool型数值) return bool ,
GetArrayField(获取FJsonValue数组作为数值) return TArray<TSharedPtr<FJsonValue>>,
GetObjectField(获取FJsonObject作为数值) return TSharedPtr<FJsonObject>.
说明:
使用TryGet和Get都可以用来获取数据,如果Json数据的字段是明确的,那么可以直接使用Get来获取.如果不确定,可以使用TryGet,根据需求选择即可
四.使用JsonWrite实现Json的构造及序列化


五.解析Json(逆序列化)
序列化:字符串转Json;逆序列化:Json解析成字符串
