gjson_api_encoding.go 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. // Copyright 2017 gf Author(https://github.com/gogf/gf). All Rights Reserved.
  2. //
  3. // This Source Code Form is subject to the terms of the MIT License.
  4. // If a copy of the MIT was not distributed with this file,
  5. // You can obtain one at https://github.com/gogf/gf.
  6. package gjson
  7. import (
  8. "github.com/gogf/gf/encoding/gini"
  9. "github.com/gogf/gf/encoding/gtoml"
  10. "github.com/gogf/gf/encoding/gxml"
  11. "github.com/gogf/gf/encoding/gyaml"
  12. "github.com/gogf/gf/internal/json"
  13. "github.com/gogf/gf/util/gconv"
  14. )
  15. // ========================================================================
  16. // JSON
  17. // ========================================================================
  18. func (j *Json) ToJson() ([]byte, error) {
  19. j.mu.RLock()
  20. defer j.mu.RUnlock()
  21. return Encode(*(j.p))
  22. }
  23. func (j *Json) ToJsonString() (string, error) {
  24. b, e := j.ToJson()
  25. return string(b), e
  26. }
  27. func (j *Json) ToJsonIndent() ([]byte, error) {
  28. j.mu.RLock()
  29. defer j.mu.RUnlock()
  30. return json.MarshalIndent(*(j.p), "", "\t")
  31. }
  32. func (j *Json) ToJsonIndentString() (string, error) {
  33. b, e := j.ToJsonIndent()
  34. return string(b), e
  35. }
  36. func (j *Json) MustToJson() []byte {
  37. result, err := j.ToJson()
  38. if err != nil {
  39. panic(err)
  40. }
  41. return result
  42. }
  43. func (j *Json) MustToJsonString() string {
  44. return gconv.UnsafeBytesToStr(j.MustToJson())
  45. }
  46. func (j *Json) MustToJsonIndent() []byte {
  47. result, err := j.ToJsonIndent()
  48. if err != nil {
  49. panic(err)
  50. }
  51. return result
  52. }
  53. func (j *Json) MustToJsonIndentString() string {
  54. return gconv.UnsafeBytesToStr(j.MustToJsonIndent())
  55. }
  56. // ========================================================================
  57. // XML
  58. // ========================================================================
  59. func (j *Json) ToXml(rootTag ...string) ([]byte, error) {
  60. return gxml.Encode(j.ToMap(), rootTag...)
  61. }
  62. func (j *Json) ToXmlString(rootTag ...string) (string, error) {
  63. b, e := j.ToXml(rootTag...)
  64. return string(b), e
  65. }
  66. func (j *Json) ToXmlIndent(rootTag ...string) ([]byte, error) {
  67. return gxml.EncodeWithIndent(j.ToMap(), rootTag...)
  68. }
  69. func (j *Json) ToXmlIndentString(rootTag ...string) (string, error) {
  70. b, e := j.ToXmlIndent(rootTag...)
  71. return string(b), e
  72. }
  73. func (j *Json) MustToXml(rootTag ...string) []byte {
  74. result, err := j.ToXml(rootTag...)
  75. if err != nil {
  76. panic(err)
  77. }
  78. return result
  79. }
  80. func (j *Json) MustToXmlString(rootTag ...string) string {
  81. return gconv.UnsafeBytesToStr(j.MustToXml(rootTag...))
  82. }
  83. func (j *Json) MustToXmlIndent(rootTag ...string) []byte {
  84. result, err := j.ToXmlIndent(rootTag...)
  85. if err != nil {
  86. panic(err)
  87. }
  88. return result
  89. }
  90. func (j *Json) MustToXmlIndentString(rootTag ...string) string {
  91. return gconv.UnsafeBytesToStr(j.MustToXmlIndent(rootTag...))
  92. }
  93. // ========================================================================
  94. // YAML
  95. // ========================================================================
  96. func (j *Json) ToYaml() ([]byte, error) {
  97. j.mu.RLock()
  98. defer j.mu.RUnlock()
  99. return gyaml.Encode(*(j.p))
  100. }
  101. func (j *Json) ToYamlString() (string, error) {
  102. b, e := j.ToYaml()
  103. return string(b), e
  104. }
  105. func (j *Json) MustToYaml() []byte {
  106. result, err := j.ToYaml()
  107. if err != nil {
  108. panic(err)
  109. }
  110. return result
  111. }
  112. func (j *Json) MustToYamlString() string {
  113. return gconv.UnsafeBytesToStr(j.MustToYaml())
  114. }
  115. // ========================================================================
  116. // TOML
  117. // ========================================================================
  118. func (j *Json) ToToml() ([]byte, error) {
  119. j.mu.RLock()
  120. defer j.mu.RUnlock()
  121. return gtoml.Encode(*(j.p))
  122. }
  123. func (j *Json) ToTomlString() (string, error) {
  124. b, e := j.ToToml()
  125. return string(b), e
  126. }
  127. func (j *Json) MustToToml() []byte {
  128. result, err := j.ToToml()
  129. if err != nil {
  130. panic(err)
  131. }
  132. return result
  133. }
  134. func (j *Json) MustToTomlString() string {
  135. return gconv.UnsafeBytesToStr(j.MustToToml())
  136. }
  137. // ========================================================================
  138. // INI
  139. // ========================================================================
  140. func (j *Json) ToIni() ([]byte, error) {
  141. j.mu.RLock()
  142. defer j.mu.RUnlock()
  143. return gini.Encode((*(j.p)).(map[string]interface{}))
  144. }
  145. func (j *Json) ToIniString() (string, error) {
  146. b, e := j.ToToml()
  147. return string(b), e
  148. }
  149. func (j *Json) MustToIni() []byte {
  150. result, err := j.ToIni()
  151. if err != nil {
  152. panic(err)
  153. }
  154. return result
  155. }
  156. func (j *Json) MustToIniString() string {
  157. return gconv.UnsafeBytesToStr(j.MustToIni())
  158. }