問題:
JSON をフィールドを持つ構造体にアンマーシャリングする文字列のスライスですが、JSON 値は区切り文字を使用して分割する必要がある単一の文字列です。
<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>
答え:
カスタム文字列スライス タイプを作成し、分割を処理する json.Unmarshaler を実装します:
<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>
このカスタム タイプを構造体で使用します:
<code class="go">type Student struct { StudentNumber int Name string Subjects strslice }</code>
コード例:
<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>
出力:
{1234567 John Doe [Chemistry Maths History Geography]} <nil>
以上がGolang で区切り文字を使用して JSON 文字列をスライスにアンマーシャリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。