UE4 C++读取Json数据,解析Json数组
Json格式示例:{"function": "Macro","params": {"behaviors": [{"behavior": {"function": "1566","params": {"duration": 6.37,"filePath...
·
Json格式示例:
{
"function": "Macro",
"params": {
"behaviors": [{
"behavior": {
"function": "1566",
"params": {
"duration": 6.37,
"filePath": "http://17/api/15"
}
},
"start_time": 0
},
{
"behavior": {
"function": "416546",
"params": {
"duration": 6.37,
"filePath": "http://175/915"
}
},
"start_time": 7.0
}
]
}
}
使用内置的json模块之前,在项目的Build.cs文件中,包含一下Json,JsonUtilities模块。
解析Json的函数
void ParseJsonObject(const FString messageStr)
{
TSharedPtr<FJsonObject>jsonObject; //FJsonObject类型
TSharedRef<TJsonReader<TCHAR>>jsonReader=TJsonReaderFactory<TCHAR>::Create(messageStr);//类型转换
bool isSe = FJsonSerializer::Deserialize(jsonReader, jsonObject); //序列化,返回FJsonObject类型数据
if (isSe) //判断一下是否转换成功
{
FString func = jsonObject->GetStringField("function"); //function字符串参数
FString content = jsonObject->GetStringField("content"); //content字符串参数
TSharedPtr<FJsonObject> paramsObject=jsonObject->GetObjectField("params"); //params参数FJsonObject类型
TArray<TSharedPtr<FJsonValue>> behaviorsArray = paramsObject->GetArrayField("behaviors"); //params下的behaviors数组参数
for(int i=0;i<behaviorsArray.Num();i++) //遍历数组
{
FString timeStr=behaviorsArray[i]->AsObject()->GetStringField("start_time"); //behaviors数组下的behavior的开始时间
float startTime=FCString::Atof(*timeStr); //开始时间float类型
TSharedPtr<FJsonObject> behaviorObj=behaviorsArray[i]->AsObject()->GetObjectField("behavior"); //behaviors数组下的behavior参数
FString beFuncStr=behaviorObj->GetStringField("function"); //behavior下的function字符串参数
TSharedPtr<FJsonObject> beParam=behaviorObj->GetObjectField("params"); //behavior下的params参数
FString filePathStr=beParam->GetStringField("filePath"); //params参数下的filePath字符串参数
}
}
}

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)