JSON doesn't allow trailing commas

This commit is contained in:
Richard Feldman 2022-07-17 15:05:57 -04:00
parent 31f7d72ce0
commit 4af506c530
No known key found for this signature in database
GPG key ID: 7E4127D1E4241798
2 changed files with 18 additions and 18 deletions

View file

@ -80,18 +80,18 @@ string = \s -> custom \bytes, @Json {} ->
list = \lst, encodeElem -> list = \lst, encodeElem ->
custom \bytes, @Json {} -> custom \bytes, @Json {} ->
writeList = \{ buffer, elemIndex }, elem -> writeList = \{ buffer, elemsLeft }, elem ->
bufferWithPrefix = bufferWithElem = appendWith buffer (encodeElem elem) (@Json {})
if elemIndex > 0 then bufferWithSuffix =
List.append buffer (Num.toU8 ',') if elemsLeft > 1 then
List.append bufferWithElem (Num.toU8 ',')
else else
buffer bufferWithElem
bufferWithElem = appendWith bufferWithPrefix (encodeElem elem) (@Json {})
{ buffer: bufferWithElem, elemIndex: elemIndex + 1 } { buffer: bufferWithSuffix, elemsLeft: elemsLeft - 1 }
head = List.append bytes (Num.toU8 '[') head = List.append bytes (Num.toU8 '[')
{ buffer: withList } = List.walk lst { buffer: head, elemIndex: 0 } writeList { buffer: withList } = List.walk lst { buffer: head, elemsLeft: List.len lst } writeList
List.append withList (Num.toU8 ']') List.append withList (Num.toU8 ']')
@ -106,7 +106,7 @@ record = \fields ->
|> appendWith value (@Json {}) |> appendWith value (@Json {})
bufferWithSuffix = bufferWithSuffix =
if fieldsLeft > 0 then if fieldsLeft > 1 then
List.append bufferWithKeyValue (Num.toU8 ',') List.append bufferWithKeyValue (Num.toU8 ',')
else else
bufferWithKeyValue bufferWithKeyValue
@ -124,7 +124,7 @@ tag = \name, payload ->
writePayload = \{ buffer, itemsLeft }, encoder -> writePayload = \{ buffer, itemsLeft }, encoder ->
bufferWithValue = appendWith buffer encoder (@Json {}) bufferWithValue = appendWith buffer encoder (@Json {})
bufferWithSuffix = bufferWithSuffix =
if itemsLeft > 0 then if itemsLeft > 1 then
List.append bufferWithValue (Num.toU8 ',') List.append bufferWithValue (Num.toU8 ',')
else else
bufferWithValue bufferWithValue

View file

@ -490,7 +490,7 @@ fn encode_derived_record_one_field_string() {
_ -> "<bad>" _ -> "<bad>"
"# "#
), ),
RocStr::from(r#"{"a":"foo",}"#), RocStr::from(r#"{"a":"foo"}"#),
RocStr RocStr
) )
} }
@ -513,7 +513,7 @@ fn encode_derived_record_two_fields_strings() {
_ -> "<bad>" _ -> "<bad>"
"# "#
), ),
RocStr::from(r#"{"a":"foo","b":"bar",}"#), RocStr::from(r#"{"a":"foo","b":"bar"}"#),
RocStr RocStr
) )
} }
@ -537,7 +537,7 @@ fn encode_derived_nested_record_string() {
_ -> "<bad>" _ -> "<bad>"
"# "#
), ),
RocStr::from(r#"{"a":{"b":"bar",},}"#), RocStr::from(r#"{"a":{"b":"bar"}}"#),
RocStr RocStr
) )
} }
@ -561,7 +561,7 @@ fn encode_derived_tag_one_payload_string() {
_ -> "<bad>" _ -> "<bad>"
"# "#
), ),
RocStr::from(r#"{"A":["foo",]}"#), RocStr::from(r#"{"A":["foo"]}"#),
RocStr RocStr
) )
} }
@ -585,7 +585,7 @@ fn encode_derived_tag_two_payloads_string() {
_ -> "<bad>" _ -> "<bad>"
"# "#
), ),
RocStr::from(r#"{"A":["foo","bar",]}"#), RocStr::from(r#"{"A":["foo","bar"]}"#),
RocStr RocStr
) )
} }
@ -610,7 +610,7 @@ fn encode_derived_nested_tag_string() {
_ -> "<bad>" _ -> "<bad>"
"# "#
), ),
RocStr::from(r#"{"A":[{"B":["foo","bar",]},]}"#), RocStr::from(r#"{"A":[{"B":["foo","bar"]}]}"#),
RocStr RocStr
) )
} }
@ -635,7 +635,7 @@ fn encode_derived_nested_record_tag_record() {
_ -> "<bad>" _ -> "<bad>"
"# "#
), ),
RocStr::from(r#"{"a":{"B":[{"c":"foo",},]},}"#), RocStr::from(r#"{"a":{"B":[{"c":"foo"}]}}"#),
RocStr RocStr
) )
} }
@ -683,7 +683,7 @@ fn encode_derived_list_of_records() {
_ -> "<bad>" _ -> "<bad>"
"# "#
), ),
RocStr::from(r#"[{"a":"foo",},{"a":"bar",},{"a":"baz",}]"#), RocStr::from(r#"[{"a":"foo"},{"a":"bar"},{"a":"baz"}]"#),
RocStr RocStr
) )
} }