Source file src/encoding/json/jsontext/quote.go

     1  // Copyright 2023 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  //go:build goexperiment.jsonv2
     6  
     7  package jsontext
     8  
     9  import (
    10  	"encoding/json/internal/jsonflags"
    11  	"encoding/json/internal/jsonwire"
    12  )
    13  
    14  // AppendQuote appends a double-quoted JSON string literal representing src
    15  // to dst and returns the extended buffer.
    16  // It uses the minimal string representation per RFC 8785, section 3.2.2.2.
    17  // Invalid UTF-8 bytes are replaced with the Unicode replacement character
    18  // and an error is returned at the end indicating the presence of invalid UTF-8.
    19  // The dst must not overlap with the src.
    20  func AppendQuote[Bytes ~[]byte | ~string](dst []byte, src Bytes) ([]byte, error) {
    21  	dst, err := jsonwire.AppendQuote(dst, src, &jsonflags.Flags{})
    22  	if err != nil {
    23  		err = &SyntacticError{Err: err}
    24  	}
    25  	return dst, err
    26  }
    27  
    28  // AppendUnquote appends the decoded interpretation of src as a
    29  // double-quoted JSON string literal to dst and returns the extended buffer.
    30  // The input src must be a JSON string without any surrounding whitespace.
    31  // Invalid UTF-8 bytes are replaced with the Unicode replacement character
    32  // and an error is returned at the end indicating the presence of invalid UTF-8.
    33  // Any trailing bytes after the JSON string literal results in an error.
    34  // The dst must not overlap with the src.
    35  func AppendUnquote[Bytes ~[]byte | ~string](dst []byte, src Bytes) ([]byte, error) {
    36  	dst, err := jsonwire.AppendUnquote(dst, src)
    37  	if err != nil {
    38  		err = &SyntacticError{Err: err}
    39  	}
    40  	return dst, err
    41  }
    42  

View as plain text