zhuan_test.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package test
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "go.mongodb.org/mongo-driver/bson"
  6. "reflect"
  7. "testing"
  8. )
  9. func TestZHUANHUAN(t *testing.T) {
  10. // 禁止参数数组,数组只能为对象方式上传
  11. articleStrings := `{
  12. "A": "支付成功",
  13. "B": {
  14. "BA": "transaction",
  15. "BB": {
  16. "BBA": "1",
  17. "BBB": "1"
  18. },
  19. "BC": [
  20. {
  21. "BCA": "1",
  22. "BCB": "1"
  23. },
  24. {
  25. "BCA": "1",
  26. "BCB": "1"
  27. }
  28. ],
  29. "BD": "BD1",
  30. "BEXXX": ["BE1","BE2","BE3"]
  31. },
  32. "C": "CC支付成功",
  33. "d": "DD支付成功",
  34. "EXXX": ["E1","E2","E3"]
  35. }`
  36. var articleSlide map[string]interface{}
  37. multiErr := json.Unmarshal([]byte(articleStrings), &articleSlide)
  38. if multiErr != nil {
  39. fmt.Println("转换出错:", multiErr)
  40. }
  41. fmt.Println(articleSlide)
  42. AnalysisMap(articleSlide, "")
  43. }
  44. func AnalysisMap(ArticleSlide map[string]interface{}, JointTab string) {
  45. //JointTab += "."
  46. T_r := make(map[string]interface{})
  47. for key, value := range ArticleSlide {
  48. //fmt.Println(reflect.TypeOf(value).String())
  49. switch reflect.TypeOf(value).String() {
  50. case "map[string]interface {}":
  51. AnalysisMap(value.(map[string]interface{}), JointTab+key+"_")
  52. break
  53. case "[]interface {}":
  54. for _, valuex := range value.([]interface{}) {
  55. if reflect.TypeOf(valuex).String() == "map[string]interface {}" {
  56. AnalysisMap(valuex.(map[string]interface{}), JointTab+key+"_")
  57. }
  58. }
  59. break
  60. default:
  61. T_r[key] = value
  62. if len(JointTab) == 0 {
  63. Data_Add("202300000001_"+key, &bson.M{key: value})
  64. }
  65. break
  66. }
  67. }
  68. if len(JointTab) == 0 {
  69. return
  70. }
  71. JointTab = JointTab[:len(JointTab)-1]
  72. fmt.Println(JointTab, "-------")
  73. bson_r := bson.M{}
  74. for key, value := range T_r {
  75. fmt.Println(key, "->:", value)
  76. bson_r[key] = value
  77. }
  78. Data_Add("202300000001_"+JointTab, &bson_r)
  79. }