json protocol

@lxyu