Untitled

 avatar
unknown
plain_text
2 years ago
607 B
6
Indexable
package main

import (
    "encoding/json"
    "fmt"
)

type MyStruct struct {
    A string `json:"A,omitempty"`
    B *string `json:"B"`
}

func (s *MyStruct) MarshalJSON() ([]byte, error) {
    if s.A == "" {
        s.B = nil // Si A se omite, también omite B
    }
    type Alias MyStruct
    return json.Marshal(&struct {
        *Alias
    }{Alias: (*Alias)(s)})
}

func main() {
    myData := MyStruct{
        A: "ValorA",
        B: stringPointer("ValorB"),
    }

    jsonData, _ := json.Marshal(myData)
    fmt.Println(string(jsonData))
}

func stringPointer(s string) *string {
    return &s
}
Editor is loading...