raft/status.go
func (s Status) MarshalJSON() ([]byte, error) {
	j := fmt.Sprintf(`{"id":"%x","term":%d,"vote":"%x","commit":%d,"lead":"%x","raftState":%q,"applied":%d,"progress":{`,
		s.ID, s.Term, s.Vote, s.Commit, s.Lead, s.RaftState, s.Applied)

	if len(s.Progress) == 0 {
		j += "},"
	} else {
		for k, v := range s.Progress {
			subj := fmt.Sprintf(`"%x":{"match":%d,"next":%d,"state":%q},`, k, v.Match, v.Next, v.State)
			j += subj
		}
		// remove the trailing ","
		j = j[:len(j)-1] + "},"
	}

	j += fmt.Sprintf(`"leadtransferee":"%x"}`, s.LeadTransferee)
	return []byte(j), nil
}
func (s Status) MarshalJSON() ([]byte, error) {
	j := fmt.Sprintf(`{"id":"%x","term":%d,"vote":"%x","commit":%d,"lead":"%x","raftState":%q,"applied":%d,"progress":{`,
		s.ID, s.Term, s.Vote, s.Commit, s.Lead, s.RaftState, s.Applied)

	if len(s.Progress) == 0 {
		j += "},"
	} else {
		for k, v := range s.Progress {
			subj := fmt.Sprintf(`"%x":{"match":%d,"next":%d,"state":%q},`, k, v.Match, v.Next, v.State)
			j += subj
		}
		// remove the trailing ","
		j = j[:len(j)-1] + "},"
	}

	j += fmt.Sprintf(`"leadtransferee":"%x"}`, s.LeadTransferee)
	return []byte(j), nil
}
func ( s Status ) MarshalJSON ( ) ( [ ] byte , error ) { j := fmt . Sprintf ( `{"id":"%x","term":%d,"vote":"%x","commit":%d,"lead":"%x","raftState":%q,"applied":%d,"progress":{` , s . ID , s . Term , s . Vote , s . Commit , s . Lead , s . RaftState , s . Applied ) if len ( s . Progress ) == 0 { j += " " } else { for k , v := range s . Progress { subj := fmt . Sprintf ( `"%x":{"match":%d,"next":%d,"state":%q},` , k , v . Match , v . Next , v . State ) j += subj } // remove the trailing "," j = j [ : len ( j ) - 1 ] + " " } j += fmt . Sprintf ( `"leadtransferee":"%x"}` , s . LeadTransferee ) return [ ] byte ( j ) , nil }
// MarshalJSON translates the raft status into JSON.
// TODO: try to simplify this by introducing ID type into raft
MarshalJSON translates the raft status into JSON . TODO : try to simplify this by introducing ID type into raft