UE5 UPROPERTY 变量名称由 FJsonObjectConverter::UStructToJsonObject 以驼峰式大小写序列化

问题描述 投票:0回答:1

我使用的是 UE 5.3。 我有一个名为“issuetype”的 UPROPERTY 变量。当使用 FJsonObjectConverter::UStructToJsonObject 进行序列化时,它会生成“issueType”。它仅在打包构建中执行此操作,而不是在 PIE 中运行时执行此操作。

查看FJsonObjectConverter::StandardizeCase,它只使第一个字符或“ID”中的“d”小写,所以我无法弄清楚为什么它在issuetype中将T大写,更不用说为什么它只这样做了在打包构建上而不是 PIE 上。如果它以某种方式识别复合词,那么我正在使用其他复合词,但它没有这样做,例如“customfield”

这是我的代码:

结构:

USTRUCT()
struct FMyIssue
{
   GENERATED_BODY()

public:
   FMyIssue() = default;

   UPROPERTY()
   TMap<FString, FString> issuetype = {{TEXT("name"), TEXT(" ") }};
}

.cpp

TSharedPtr<FMyStruct> myStruct = MakeShared<FMyStruct>();
TSharedPtr<FJsonObject> jsonObject = FJsonObjectConverter::UStructToJsonObject(*myStruct);

FString serializedSelf;
const TSharedRef<TJsonWriter<>> jsonWriter = TJsonWriterFactory<>::Create(&serializedSelf);
FJsonSerializer::Serialize(jsonObject .ToSharedRef(), jsonWriter)

const FString fileLocation = TEXT("path/to/file");
FFileHelper::SaveStringToFile(serializedSelf, *fileLocation)

输出:

{
    "issueType":
        {
            "name": " "
        },
}
json serialization unreal-engine5 json-serialization
1个回答
0
投票

我正在从名为 IssueType 的配置 ini 键中提取值。我将问题类型的每个实例都设置为小写,这解决了问题。我不明白如何或为什么,但它确实如此。

.ini 小写之前

[IssueType]
IssueType = myissue

cpp

_issuetype = GConfig->GetStr(TEXT("IssueType"), TEXT("IssueType"), configFile);
myIssue->issuetype[TEXT("name")] = GetDefault<UMySettings>()->_issuetype;
© www.soinside.com 2019 - 2024. All rights reserved.