all repos

json2go @ a1fb55eb960ec5d95dd1606e19a9e1e150f1a1d1

convert json to go type annotations
1 files changed, 15 insertions(+), 8 deletions(-)
fix!: indentation
Author: Oleksandr Smirnov olexsmir@gmail.com
Committed at: 2026-07-12 13:02:52 +0300
Authored at: 2026-07-12 12:59:32 +0300
Change ID: kwzrlpztsopowtwtlnlzqlnptkzlkxzr
Parent: 07ff9b9
M transpiler.go
···
        23
        23
         			buf.WriteString("]any")

      
        24
        24
         		} else {

      
        25
        25
         			buf.WriteByte(']')

      
        26
        
        -			t.writeInlineType(&buf, structName+"Item", v.Array[0], includeTags)

      
        
        26
        +			t.writeInlineType(&buf, structName+"Item", v.Array[0], includeTags, 0)

      
        27
        27
         		}

      
        28
        28
         

      
        29
        29
         	case ObjectValue:

      
        30
        30
         		buf.WriteByte(' ')

      
        31
        
        -		t.writeInlineStruct(&buf, structName, v.Object, includeTags)

      
        
        31
        +		t.writeInlineStruct(&buf, structName, v.Object, includeTags, 0)

      
        32
        32
         

      
        33
        33
         	default:

      
        34
        34
         		buf.WriteByte(' ')

      ···
        38
        38
         	return buf.String(), nil

      
        39
        39
         }

      
        40
        40
         

      
        41
        
        -func (t *Transpiler) writeInlineType(buf *strings.Builder, name string, v Value, includeTags bool) {

      
        
        41
        +func (t *Transpiler) writeInlineType(buf *strings.Builder, name string, v Value, includeTags bool, depth int) {

      
        42
        42
         	switch v.Kind {

      
        43
        43
         	case ObjectValue:

      
        44
        
        -		t.writeInlineStruct(buf, name, v.Object, includeTags)

      
        
        44
        +		t.writeInlineStruct(buf, name, v.Object, includeTags, depth)

      
        45
        45
         

      
        46
        46
         	case ArrayValue:

      
        47
        47
         		buf.WriteByte('[')

      ···
        49
        49
         			buf.WriteString("]any")

      
        50
        50
         		} else {

      
        51
        51
         			buf.WriteByte(']')

      
        52
        
        -			t.writeInlineType(buf, name+"Item", v.Array[0], includeTags)

      
        
        52
        +			t.writeInlineType(buf, name+"Item", v.Array[0], includeTags, depth)

      
        53
        53
         		}

      
        54
        54
         

      
        55
        55
         	default:

      ···
        57
        57
         	}

      
        58
        58
         }

      
        59
        59
         

      
        60
        
        -func (t *Transpiler) writeInlineStruct(buf *strings.Builder, name string, fields []Field, includeTags bool) {

      
        
        60
        +func (t *Transpiler) writeIndent(buf *strings.Builder, depth int) {

      
        
        61
        +	for i := 0; i < depth; i++ {

      
        
        62
        +		buf.WriteByte('\t')

      
        
        63
        +	}

      
        
        64
        +}

      
        
        65
        +

      
        
        66
        +func (t *Transpiler) writeInlineStruct(buf *strings.Builder, name string, fields []Field, includeTags bool, depth int) {

      
        61
        67
         	buf.WriteString("struct {\n")

      
        62
        68
         	for _, f := range fields {

      
        63
        69
         		fieldName := t.sanitizeFieldName(f.K)

      
        64
        
        -		buf.WriteByte('\t')

      
        
        70
        +		t.writeIndent(buf, depth+1)

      
        65
        71
         		buf.WriteString(fieldName)

      
        66
        72
         		buf.WriteByte(' ')

      
        67
        
        -		t.writeInlineType(buf, name+fieldName, f.V, includeTags)

      
        
        73
        +		t.writeInlineType(buf, name+fieldName, f.V, includeTags, depth+1)

      
        68
        74
         		if includeTags {

      
        69
        75
         			buf.WriteString(" `json:\"")

      
        70
        76
         			buf.WriteString(f.K)

      ···
        72
        78
         		}

      
        73
        79
         		buf.WriteByte('\n')

      
        74
        80
         	}

      
        
        81
        +	t.writeIndent(buf, depth)

      
        75
        82
         	buf.WriteByte('}')

      
        76
        83
         }

      
        77
        84