github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/encoding/json/indent.go (about)

     1  // Copyright 2010 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  package json
     6  
     7  import "github.com/shogo82148/std/bytes"
     8  
     9  // HTMLEscapeは、JSONエンコードされたsrcをdstに追加します。ただし、文字列リテラル内の<, >, &, U+2028およびU+2029
    10  // 文字は\u003c, \u003e, \u0026, \u2028, \u2029に変更されます。
    11  // これにより、JSONはHTMLの<script>タグ内に埋め込むのに安全になります。
    12  // 歴史的な理由から、ウェブブラウザは<script>タグ内で標準的なHTMLエスケープを尊重しないため、
    13  // 代替のJSONエンコーディングを使用する必要があります。
    14  func HTMLEscape(dst *bytes.Buffer, src []byte)
    15  
    16  // Compactは、無意味なスペース文字が省略された、JSONエンコードされたsrcをdstに追加します。
    17  func Compact(dst *bytes.Buffer, src []byte) error
    18  
    19  // Indentは、JSONエンコードされたsrcのインデント形式をdstに追加します。
    20  // JSONオブジェクトまたは配列の各要素は、新しい、インデントされた行で始まり、
    21  // その行はprefixで始まり、インデントのネストに応じてindentの1つ以上のコピーが続きます。
    22  // dstに追加されるデータは、prefixやインデントで始まらないようになっています。
    23  // これにより、他のフォーマットされたJSONデータ内に埋め込むのが容易になります。
    24  // srcの先頭の空白文字(スペース、タブ、キャリッジリターン、改行)は削除されますが、
    25  // srcの末尾の空白文字は保持され、dstにコピーされます。
    26  // 例えば、srcが末尾のスペースを持っていない場合、dstも持ちません。
    27  // srcが末尾の改行で終わる場合、dstも同様になります。
    28  func Indent(dst *bytes.Buffer, src []byte, prefix, indent string) error