二十一.Json數(shù)據(jù)的讀寫
一.了解Json數(shù)據(jù)的格式
1.Json值
● 數(shù)字(整數(shù)或浮點(diǎn)數(shù))
●?字符串(在雙引號中)
●?邏輯值(true 或 false)
●?數(shù)組(在中括號中)
●?對象(在大括號中)
●?null
2.常見的Json
格式: "鍵":值(key:value)
①最簡單的Json數(shù)據(jù)對象
大括號?{ }?保存對象
②Json對象作為value
③Json對象數(shù)組
中括號?[ ]?保存數(shù)組,數(shù)組可以包含多個對象
④Json對象數(shù)組作為value
二.UE5中通過JsonObject構(gòu)造Json與序列化
1.構(gòu)造
FJsonObject 在UE4里表示一個Json對象,用于存儲Json數(shù)據(jù)?
①將Json模塊導(dǎo)入UE項(xiàng)目名.Bulid.cs中

②聲明(初始化)FJsonObject

藍(lán)圖與c++對比序列化Json對象


③常見的數(shù)據(jù)類型作為值儲存在JsonObject中(Jsonobject的構(gòu)造)
④將Json對象作為值儲存在JsonObject中(Jsonobject的構(gòu)造)
⑤將Json對象數(shù)組作為值儲存在JsonObject中(Jsonobject的構(gòu)造)
2.序列化JsonObject
格式為固定格式,只要改一下里面的JsonObject即可,在下面的代碼指的是:RootJsonObject(Json對象)
注:TJsonWriterFactory是一個接受policy的模版,用于決定Json是如何被打印的。例如,"pretty"模式(易讀的格式化),或者"condensed"模式(空白符都被去除掉)。他們對應(yīng)的名字就是TCondensedJsonPrintPolicy和TPrettyJsonPrintPolicy。

三.JsonObject獲取數(shù)據(jù)的方式
1.判斷是否擁有某個字段

2.TryGetXXXFiled





3.GetXXXFiled
GetNumberField(獲取浮點(diǎn)型數(shù)值) return double,
GetBoolField(獲取bool型數(shù)值) return bool ,
GetArrayField(獲取FJsonValue數(shù)組作為數(shù)值) return TArray<TSharedPtr<FJsonValue>>,
GetObjectField(獲取FJsonObject作為數(shù)值) return TSharedPtr<FJsonObject>.
說明:
使用TryGet和Get都可以用來獲取數(shù)據(jù),如果Json數(shù)據(jù)的字段是明確的,那么可以直接使用Get來獲取.如果不確定,可以使用TryGet,根據(jù)需求選擇即可?
四.使用JsonWrite實(shí)現(xiàn)Json的構(gòu)造及序列化


五.解析Json(逆序列化)
序列化:字符串轉(zhuǎn)Json;逆序列化:Json解析成字符串
