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)
{
TSharedPtrjsonObject; //FJsonObject类型
TSharedRefjsonReader=TJsonReaderFactory::Create(messageStr);//类型转换
bool isSe = FJsonSerializer::Deserialize(jsonReader, jsonObject); //序列化,返回FJsonObject类型数据
if (isSe) //判断一下是否转换成功
{
FString func = jsonObject->GetStringField("function"); //function字符串参数
FString content = jsonObject->GetStringField("content"); //content字符串参数
TSharedPtr paramsObject=jsonObject->GetObjectField("params"); //params参数FJsonObject类型
TArray behaviorsArray = paramsObject->GetArrayField("behaviors"); //params下的behaviors数组参数
for(int i=0;iAsObject()->GetStringField("start_time"); //behaviors数组下的behavior的开始时间
float startTime=FCString::Atof(*timeStr); //开始时间float类型
TSharedPtr behaviorObj=behaviorsArray[i]->AsObject()->GetObjectField("behavior"); //behaviors数组下的behavior参数
FString beFuncStr=behaviorObj->GetStringField("function"); //behavior下的function字符串参数
TSharedPtr beParam=behaviorObj->GetObjectField("params"); //behavior下的params参数
FString filePathStr=beParam->GetStringField("filePath"); //params参数下的filePath字符串参数
}
}
}