internal string ToJsonString() { var sb = new StringBuilder(); using(var sw = new StringWriter(sb)) using(JsonWriter jw = new JsonTextWriter(sw)) { jw.WriteStartObject(); jw.WritePropertyName("props"); jw.WriteStartObject(); jw.WriteNullableProperty("n_val", NVal) .WriteNullableProperty("allow_mult", AllowMultiple) .WriteNullableProperty("last_write_wins", LastWriteWins) .WriteNullableProperty("r", RVal) .WriteNullableProperty("rw", RwVal) .WriteNullableProperty("dw", DwVal) .WriteNullableProperty("w", WVal) .WriteNullableProperty("pr", PrVal) .WriteNullableProperty("pw", PwVal) .WriteNonNullProperty("backend", Backend) .WriteNullableProperty("notfound_ok", NotFoundOk) .WriteNullableProperty("basic_quorum", BasicQuorum) .WriteNullableProperty("has_precommit", HasPrecommit) .WriteNullableProperty("has_postcommit", HasPostcommit); if(PreCommitHooks != null) { jw.WritePropertyName("precommit"); jw.WriteStartArray(); PreCommitHooks.ForEach(hook => hook.WriteJson(jw)); jw.WriteEndArray(); } if(PostCommitHooks != null) { jw.WritePropertyName("postcommit"); jw.WriteStartArray(); PostCommitHooks.ForEach(hook => hook.WriteJson(jw)); jw.WriteEndArray(); } jw.WriteEndObject(); jw.WriteEndObject(); } return sb.ToString(); }