Heim >Backend-Entwicklung >Golang >Wie entmarshaliere ich einen JSON-String mithilfe eines Trennzeichens in Golang in ein Slice?
Problem:
Unmarshalling von JSON in eine Struktur mit einem Feld, das sein sollte ein Stück von Zeichenfolgen, während der JSON-Wert eine einzelne Zeichenfolge ist, die mithilfe eines Trennzeichens aufgeteilt werden muss.
<code class="json">{ "student_number": 1234567, "name": "John Doe", "subjects": "Chemistry-Maths-History-Geography" }</code>
<code class="go">type Student struct { StudentNumber int Name string Subjects []string }</code>
Antwort:
Definieren Sie a Benutzerdefinierter String-Slice-Typ und implementieren Sie json.Unmarshaler, um die Aufteilung zu handhaben:
<code class="go">type strslice []string func (ss *strslice) UnmarshalJSON(data []byte) error { var s string if err := json.Unmarshal(data, &s); err != nil { return err } *ss = strings.Split(s, "-") return nil }</code>
Verwenden Sie diesen benutzerdefinierten Typ in der Struktur:
<code class="go">type Student struct { StudentNumber int Name string Subjects strslice }</code>
Codebeispiel:
<code class="go">func main() { var s Student err := json.Unmarshal([]byte(src), &s) fmt.Println(s, err) } const src = `{"student_number":1234567, "name":"John Doe", "subjects":"Chemistry-Maths-History-Geography"}`</code>
Ausgabe:
{1234567 John Doe [Chemistry Maths History Geography]} <nil>
Das obige ist der detaillierte Inhalt vonWie entmarshaliere ich einen JSON-String mithilfe eines Trennzeichens in Golang in ein Slice?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!