Based on this suggestion here's a simple "merger" helper:
struct Merger: Encodable {
let values: [Encodable]
func encode(to encoder: Encoder) throws {
for value in values {
try value.encode(to: encoder)
}
}
}
let series = Series(id: 123, title: "some title", overview: "some overview")
let additional = AdditionalParams(additionalField1: 1, additionalField2: false, additionalField3: "3")
let v = Merger(values: [series, additional])
let encoder = JSONEncoder()
encoder.outputFormatting = .sortedKeys
let data = try! encoder.encode(v)
let s = String(data: data, encoding: .utf8)!
print(s)
// {"additionalField1":1,"additionalField2":false,"additionalField3":"3","id":123,"overview":"some overview","title":"some title"}
Edit: modified code a bit to support multi-merge.