Description

FJsonObjectConverter::JsonObjectToUStruct removes _ClassName from nested JSON objects during deserialization.

Removing Obj->RemoveField(ObjectClassNameKey) from ConvertScalarJsonValueToFPropertyWithContainer appears to fix the issue.

This is problematic for cases where the same in-memory FJsonObject is deserialized more than once and _ClassName is needed to resolve a concrete subclass.

Reproduced in UE 5.6, 5.7, and UE5-Main at CL 51575875.

A repro project is attached where an instanced UObject array is declared as an abstract base type and populated with a derived object instance before being serialized to an in-memory FJsonObject. When that same FJsonObject is then deserialized multiple times, only the first import succeeds. Subsequent imports fail because _ClassName was removed during the first call, so the later import attempts fall back to the abstract declared type, which cannot be instantiated.[Link Removed]

Steps to Reproduce

1. Open the attached repro project

2. Start PIE

3. Observe the output log. Second conversion performed in AJsonReproActor::ConvertJson fails and outputs

LogJson: Error: JsonValueToUProperty - Unable to import JSON object into ... property Objects. Class is abstract.

LogJson: Error: JsonValueToUProperty - Unable to import Array element 0 for property Objects

LogJson: Error: JsonObjectToUStruct - Unable to import JSON value into property Objects

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-370446 in the post.

0
Login to Vote

Unresolved
ComponentUE - Foundation
Affects Versions5.65.75.8
CreatedMar 18, 2026
UpdatedMar 23, 2026
View Jira Issue