- ue4 json解析参考: https://blog.youkuaiyun.com/or_7r_ccl/article/details/53483810
- 注意事项:
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和值是不匹配的,将会有断言提醒,并且会报错
- 将一个结构体或者类数据,组装成json字符串的关键代码:
FString JsonOutString;
TSharedRef<TJsonWriter<TCHAR, TCondensedJsonPrintPolicy<TCHAR>>> Writer = TJsonWriterFactory< TCHAR, TCondensedJsonPrintPolicy<TCHAR> >::Create(&JsonOutString);
- 解析字符串时,一定要注意:字符串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);