testjsonql.go 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package main
  2. import (
  3. "fmt"
  4. "github.com/elgs/jsonql"
  5. )
  6. var jsonString = `
  7. [
  8. {
  9. "name": "elgs",
  10. "gender": "m",
  11. "age": 35,
  12. "skills": [
  13. "Golang",
  14. "Java",
  15. "C"
  16. ]
  17. },
  18. {
  19. "name": "enny",
  20. "gender": "f",
  21. "age": 36,
  22. "hobby": null,
  23. "skills": [
  24. "IC",
  25. "Electric design",
  26. "Verification"
  27. ]
  28. },
  29. {
  30. "name": "sam",
  31. "gender": "m",
  32. "age": 1,
  33. "hobby": "dancing",
  34. "skills": [
  35. "Eating",
  36. "Sleeping",
  37. "Crawling"
  38. ]
  39. }
  40. ]
  41. `
  42. func main() {
  43. parser, err := jsonql.NewStringQuery(jsonString)
  44. if err != nil {
  45. fmt.Println(err)
  46. return
  47. }
  48. fmt.Println(parser.Query("name='elgsaa'"))
  49. //[map[skills:[Golang Java C] name:elgs gender:m age:35]] <nil>
  50. /*
  51. fmt.Println(parser.Query("name='elgs' && gender='f'"))
  52. //[] <nil>
  53. fmt.Println(parser.Query("age<10 || (name='enny' && gender='f')"))
  54. // [map[hobby:<nil> skills:[IC Electric design Verification] name:enny gender:f age:36] map[name:sam gender:m age:1 hobby:dancing skills:[Eating Sleeping Crawling]]] <nil>
  55. fmt.Println(parser.Query("age<10"))
  56. // [map[gender:m age:1 hobby:dancing skills:[Eating Sleeping Crawling] name:sam]] <nil>
  57. fmt.Println(parser.Query("1=0"))
  58. //[] <nil>
  59. fmt.Println(parser.Query("age=(2*3)^2"))
  60. //[map[skills:[IC Electric design Verification] name:enny gender:f age:36 hobby:<nil>]] <nil>
  61. fmt.Println(parser.Query("name ~= 'e.*'"))
  62. // [map[name:elgs gender:m age:35 skills:[Golang Java C]] map[hobby:<nil> skills:[IC Electric design Verification] name:enny gender:f age:36]] <nil>
  63. fmt.Println(parser.Query("name='el'+'gs'"))
  64. fmt.Println(parser.Query("age=30+5.0"))
  65. fmt.Println(parser.Query("age=40.0-5"))
  66. fmt.Println(parser.Query("age=70-5*7"))
  67. fmt.Println(parser.Query("age=70.0/2.0"))
  68. fmt.Println(parser.Query("age=71%36"))
  69. // [map[name:elgs gender:m age:35 skills:[Golang Java C]]] <nil>
  70. fmt.Println(parser.Query("hobby is defined"))
  71. // [map[name:enny gender:f age:36 hobby:<nil> skills:[IC Electric design Verification]] map[name:sam gender:m age:1 hobby:dancing skills:[Eating Sleeping Crawling]]] <nil>
  72. fmt.Println(parser.Query("hobby isnot defined"))
  73. // [map[name:sam gender:m age:1 skills:[Eating Sleeping Crawling]]] <nil>
  74. fmt.Println(parser.Query("hobby is null"))
  75. // [map[hobby:<nil> skills:[IC Electric design Verification] name:enny gender:f age:36]] <nil>
  76. fmt.Println(parser.Query("hobby isnot null"))
  77. // [map[name:sam gender:m age:1 hobby:dancing skills:[Eating Sleeping Crawling]]] <nil>*/
  78. }