Building a modular data reader system
Since there should be a relation between your importer data reader and data accessor ( importer should know how to use data accessor to access data.) I suggest that you use generics to achieve such coherence.(Since each importer needs its unique data then IDataAccessors can't be replaced by each other thus I don't think that's a good idea to introduce an abstraction for them)  

public abstract ImporterDataReader&lt;TAccessor&gt;:IImporterDataReader
{
public abstract bool HasValue(TAccessor accessor);

public abstract string GetValue(TAccessor accessor);
}


Then you can have concrete classes for each type of Accessor:

public class JsonDataReader:ImporterDataReader&lt;JsonDataAccessor&gt;
{
....
}