Unreal Engine中 解析byte 数据 JSON
时间: 2024-03-10 12:50:27 浏览: 159
在 Unreal Engine 中解析 byte 数据的 JSON 可以使用 UE 提供的 FJson 模块。以下是一个简单的示例代码:
```c++
#include "Json.h"
// 假设有一个 byte 数组叫做 jsonData,长度为 dataLen,里面存储了 JSON 字符串
TSharedPtr<FJsonObject> JsonObject;
TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(FString((char*)jsonData, dataLen));
if (FJsonSerializer::Deserialize(JsonReader, JsonObject))
{
FString Name = JsonObject->GetStringField("name");
int32 Age = JsonObject->GetIntegerField("age");
bool IsStudent = JsonObject->GetBoolField("isStudent");
TArray<int32> Grades;
TArray<TSharedPtr<FJsonValue>> JsonGrades = JsonObject->GetArrayField("grades");
for (int32 i = 0; i < JsonGrades.Num(); i++)
{
Grades.Add(JsonGrades[i]->AsNumber());
}
}
```
上述代码中,首先创建一个 TJsonReader 对象,用于读取 byte 数组中的 JSON 字符串。然后调用 FJsonSerializer::Deserialize 方法将 JSON 字符串解析为 FJsonObject 对象,再通过 FJsonObject 的各种 Get*Field 方法获取字段的值。其中 grades 字段是一个数组,需要使用 GetArrayField 方法获取数组的值,并通过 TSharedPtr<FJsonValue> 的 AsNumber 方法将元素转换为 int32 类型。
需要注意的是,在使用 FJson 模块解析 JSON 数据时,需要确保 JSON 数据的格式正确,否则会导致解析失败。
阅读全文