module DingSDK::MetadataFields
def marshal_json(encode: true)
def marshal_json(encode: true) d = {} fields.sort_by(&:name).each do |field| f = send(field.name) next if f.nil? format_json_meta = field.metadata[:format_json] if !format_json_meta.nil? && format_json_meta.include?(:letter_case) key = format_json_meta[:letter_case].call(field.name) else key = field.name end if f.is_a? Array d[key] = f.map { |o| marshal_single(o) } elsif f.is_a? Hash d[key] = f.map { |k, v| [k, marshal_single(v)] } else d[key] = marshal_single(f) end end if encode JSON.dump(d) else d end end