《UE4游戏开发》之 《Json解析》

  1. ue4 json解析参考: https://blog.csdn.net/or_7r_ccl/article/details/53483810
  2. 注意事项:
void WriteArrayStart( const FString& Identifier )
	{
    
    
		check( Stack.Top() == EJson::Object );
		WriteIdentifier( Identifier );

		PrintPolicy::WriteSpace( Stream );
		PrintPolicy::WriteChar(Stream, CharType('['));
		++IndentLevel;
		Stack.Push( EJson::Array );
		PreviousTokenWritten = EJsonToken::SquareOpen;
	}

Identifier :该参数就是json中的key,当你在将一个结构体或者类数据,组装成json字符串时,如果key和值是不匹配的,将会有断言提醒,并且会报错

  1. 将一个结构体或者类数据,组装成json字符串的关键代码:
	FString JsonOutString;
	TSharedRef<TJsonWriter<TCHAR, TCondensedJsonPrintPolicy<TCHAR>>> Writer = TJsonWriterFactory< TCHAR, TCondensedJsonPrintPolicy<TCHAR> >::Create(&JsonOutString);
  1. 解析字符串时,一定要注意:字符串json,是一个数组的json字符串,还是一个对象的json,这个将决定解析时,结果类型的声明;当是一个数组json时,
 	FString JsonValue = "[{\"author\":\"4446545646544\"},{\"name\":\"jack\"}]";
    TArray<TSharedPtr<FJsonValue>> JsonParsed;  //声明的是数组类型
    TSharedRef< TJsonReader<TCHAR> > JsonReader = TJsonReaderFactory<TCHAR>::Create(JsonValue);     
    bool BFlag = FJsonSerializer::Deserialize(JsonReader, JsonParsed);  
	FString JsonValue = "{\"author\":\"4446545646544\"}";
	TSharedPtr<FJsonObject> JsonParsed;//声明的是一个对象智能指针
	TSharedRef< TJsonReader<TCHAR> > JsonReader = TJsonReaderFactory<TCHAR>::Create(JsonValue);

猜你喜欢

转载自blog.csdn.net/qq_21919621/article/details/107462853