Runtime generating json data without structure

`func queryToJson(db *sql.DB, query string, args …interface{}) ([]byte, error) {
// an array of JSON objects
// the map key is the field name
var objects []map[string]interface{}

rows, err := db.Query(query, args...)
if err != nil {
	return nil, err
}
for rows.Next() {
	// figure out what columns were returned
	// the column names will be the JSON object field keys
	columns, err := rows.ColumnTypes()
	if err != nil {
		return nil, err
	}

	// Scan needs an array of pointers to the values it is setting
	// This creates the object and sets the values correctly
	values := make([]interface{}, len(columns))
	object := map[string]interface{}{}
	for i, column := range columns {
		object[column.Name()] = reflect.New(column.ScanType()).Interface()
		values[i] = object[column.Name()]
	}

	err = rows.Scan(values...)
	if err != nil {
		return nil, err
	}

	objects = append(objects, object)
}

// indent because I want to read the output
return json.MarshalIndent(objects, "", "\t")

}
`
This code is working . I want column should be as in database table fields order.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.