add json encode, decode