add json encode/decode