fix: when resource is empty, keep json resource root