您当前的位置: 首页 >  ue4

虎冯河

暂无认证

  • 6浏览

    0关注

    112博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

UE4 C++读取Json数据,解析Json数组

虎冯河 发布时间:2021-05-07 18:18:39 ,浏览量:6

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字符串参数
	

	    }
		
    }
}
关注
打赏
1649935522
查看更多评论
立即登录/注册

微信扫码登录

0.1112s