🐛 WriteValue can handle slices and maps
This commit is contained in:
		
					parent
					
						
							
								820a2de269
							
						
					
				
			
			
				commit
				
					
						59634f6c3f
					
				
			
		
					 2 changed files with 14 additions and 0 deletions
				
			
		|  | @ -14,6 +14,18 @@ func WriteValue(buff *bytes.Buffer, val any) (n int, err error) { | ||||||
| 		err = fmt.Errorf("Unsupported type %T", v) | 		err = fmt.Errorf("Unsupported type %T", v) | ||||||
| 	case nil: | 	case nil: | ||||||
| 		return | 		return | ||||||
|  | 	case []any: | ||||||
|  | 		var o []byte | ||||||
|  | 		o, err = json.Marshal(v) | ||||||
|  | 		if err == nil { | ||||||
|  | 			return buff.Write(o) | ||||||
|  | 		} | ||||||
|  | 	case map[string]any: | ||||||
|  | 		var o []byte | ||||||
|  | 		o, err = json.Marshal(v) | ||||||
|  | 		if err == nil { | ||||||
|  | 			return buff.Write(o) | ||||||
|  | 		} | ||||||
| 	case string: | 	case string: | ||||||
| 		return buff.WriteString(v) | 		return buff.WriteString(v) | ||||||
| 	case int: | 	case int: | ||||||
|  |  | ||||||
|  | @ -30,6 +30,8 @@ func TestWriteBuffer(t *testing.T) { | ||||||
| 		{"json.Number", json.Number("42.13"), "42.13", nil}, | 		{"json.Number", json.Number("42.13"), "42.13", nil}, | ||||||
| 		{"json.RawMessage", json.RawMessage("{}"), "{}", nil}, | 		{"json.RawMessage", json.RawMessage("{}"), "{}", nil}, | ||||||
| 		{"time", when, when.Format(time.RFC3339), nil}, | 		{"time", when, when.Format(time.RFC3339), nil}, | ||||||
|  | 		{"slice", []any{1, 2, "foo"}, `[1,2,"foo"]`, nil}, | ||||||
|  | 		{"map", map[string]any{"baz": 42, "foo": "bar"}, `{"baz":42,"foo":"bar"}`, nil}, | ||||||
| 		{"struct", struct{}{}, "", errors.New("Unsupported type struct {}")}, | 		{"struct", struct{}{}, "", errors.New("Unsupported type struct {}")}, | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue