fix json circular ref bug