gjson_api_encoding.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. // Copyright GoFrame Author(https://goframe.org). 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. )
  14. // ========================================================================
  15. // JSON
  16. // ========================================================================
  17. func (j *Json) ToJson() ([]byte, error) {
  18. j.mu.RLock()
  19. defer j.mu.RUnlock()
  20. return Encode(*(j.p))
  21. }
  22. func (j *Json) ToJsonString() (string, error) {
  23. b, e := j.ToJson()
  24. return string(b), e
  25. }
  26. func (j *Json) ToJsonIndent() ([]byte, error) {
  27. j.mu.RLock()
  28. defer j.mu.RUnlock()
  29. return json.MarshalIndent(*(j.p), "", "\t")
  30. }
  31. func (j *Json) ToJsonIndentString() (string, error) {
  32. b, e := j.ToJsonIndent()
  33. return string(b), e
  34. }
  35. func (j *Json) MustToJson() []byte {
  36. result, err := j.ToJson()
  37. if err != nil {
  38. panic(err)
  39. }
  40. return result
  41. }
  42. func (j *Json) MustToJsonString() string {
  43. return string(j.MustToJson())
  44. }
  45. func (j *Json) MustToJsonIndent() []byte {
  46. result, err := j.ToJsonIndent()
  47. if err != nil {
  48. panic(err)
  49. }
  50. return result
  51. }
  52. func (j *Json) MustToJsonIndentString() string {
  53. return string(j.MustToJsonIndent())
  54. }
  55. // ========================================================================
  56. // XML
  57. // ========================================================================
  58. func (j *Json) ToXml(rootTag ...string) ([]byte, error) {
  59. return gxml.Encode(j.Map(), rootTag...)
  60. }
  61. func (j *Json) ToXmlString(rootTag ...string) (string, error) {
  62. b, e := j.ToXml(rootTag...)
  63. return string(b), e
  64. }
  65. func (j *Json) ToXmlIndent(rootTag ...string) ([]byte, error) {
  66. return gxml.EncodeWithIndent(j.Map(), rootTag...)
  67. }
  68. func (j *Json) ToXmlIndentString(rootTag ...string) (string, error) {
  69. b, e := j.ToXmlIndent(rootTag...)
  70. return string(b), e
  71. }
  72. func (j *Json) MustToXml(rootTag ...string) []byte {
  73. result, err := j.ToXml(rootTag...)
  74. if err != nil {
  75. panic(err)
  76. }
  77. return result
  78. }
  79. func (j *Json) MustToXmlString(rootTag ...string) string {
  80. return string(j.MustToXml(rootTag...))
  81. }
  82. func (j *Json) MustToXmlIndent(rootTag ...string) []byte {
  83. result, err := j.ToXmlIndent(rootTag...)
  84. if err != nil {
  85. panic(err)
  86. }
  87. return result
  88. }
  89. func (j *Json) MustToXmlIndentString(rootTag ...string) string {
  90. return string(j.MustToXmlIndent(rootTag...))
  91. }
  92. // ========================================================================
  93. // YAML
  94. // ========================================================================
  95. func (j *Json) ToYaml() ([]byte, error) {
  96. j.mu.RLock()
  97. defer j.mu.RUnlock()
  98. return gyaml.Encode(*(j.p))
  99. }
  100. func (j *Json) ToYamlString() (string, error) {
  101. b, e := j.ToYaml()
  102. return string(b), e
  103. }
  104. func (j *Json) MustToYaml() []byte {
  105. result, err := j.ToYaml()
  106. if err != nil {
  107. panic(err)
  108. }
  109. return result
  110. }
  111. func (j *Json) MustToYamlString() string {
  112. return string(j.MustToYaml())
  113. }
  114. // ========================================================================
  115. // TOML
  116. // ========================================================================
  117. func (j *Json) ToToml() ([]byte, error) {
  118. j.mu.RLock()
  119. defer j.mu.RUnlock()
  120. return gtoml.Encode(*(j.p))
  121. }
  122. func (j *Json) ToTomlString() (string, error) {
  123. b, e := j.ToToml()
  124. return string(b), e
  125. }
  126. func (j *Json) MustToToml() []byte {
  127. result, err := j.ToToml()
  128. if err != nil {
  129. panic(err)
  130. }
  131. return result
  132. }
  133. func (j *Json) MustToTomlString() string {
  134. return string(j.MustToToml())
  135. }
  136. // ========================================================================
  137. // INI
  138. // ========================================================================
  139. func (j *Json) ToIni() ([]byte, error) {
  140. j.mu.RLock()
  141. defer j.mu.RUnlock()
  142. return gini.Encode((*(j.p)).(map[string]interface{}))
  143. }
  144. func (j *Json) ToIniString() (string, error) {
  145. b, e := j.ToToml()
  146. return string(b), e
  147. }
  148. func (j *Json) MustToIni() []byte {
  149. result, err := j.ToIni()
  150. if err != nil {
  151. panic(err)
  152. }
  153. return result
  154. }
  155. func (j *Json) MustToIniString() string {
  156. return string(j.MustToIni())
  157. }