Home >Backend Development >Golang >How to Unmarshal a JSON String into a Slice Using a Delimiter in Golang?
Problem:
Unmarshalling JSON into a struct with a field that should be a slice of strings, while the JSON value is a single string that needs to be split using a delimiter.
<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>
Answer:
Define a custom string slice type and implement json.Unmarshaler to handle the split:
<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>
Use this custom type in the struct:
<code class="go">type Student struct { StudentNumber int Name string Subjects strslice }</code>
Code Example:
<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>
Output:
{1234567 John Doe [Chemistry Maths History Geography]} <nil>
The above is the detailed content of How to Unmarshal a JSON String into a Slice Using a Delimiter in Golang?. For more information, please follow other related articles on the PHP Chinese website!