bool FDataTableExporterJSON::WriteStruct(const UScriptStruct* InStruct, const void* InStructData) { for (TFieldIterator<const UProperty> It(InStruct); It; ++It) { const UProperty* BaseProp = *It; check(BaseProp); if (BaseProp->ArrayDim == 1) { const void* Data = BaseProp->ContainerPtrToValuePtr<void>(InStructData, 0); WriteStructEntry(InStructData, BaseProp, Data); } else { const FString Identifier = DataTableUtils::GetPropertyExportName(BaseProp, DTExportFlags); JsonWriter->WriteArrayStart(Identifier); for (int32 ArrayEntryIndex = 0; ArrayEntryIndex < BaseProp->ArrayDim; ++ArrayEntryIndex) { const void* Data = BaseProp->ContainerPtrToValuePtr<void>(InStructData, ArrayEntryIndex); WriteArrayEntry(BaseProp, Data); } JsonWriter->WriteArrayEnd(); } } return true; }
bool FDataTableExporterJSON::WriteRow(const void* InRowData) { if (!DataTable->RowStruct) { return false; } for (TFieldIterator<UProperty> It(DataTable->RowStruct); It; ++It) { UProperty* BaseProp = *It; check(BaseProp); const void* Data = BaseProp->ContainerPtrToValuePtr<void>(InRowData, 0); WriteStructEntry(InRowData, BaseProp, Data); } return true; }