我有字符串数据,我必须根据要求修改并将其转换为 JSON 我在检查匹配类型的地方创建了 getSymbolForFilter 函数 但是在 formatGa4DimensionFilters 函数中,我必须在 clojure 中为所需的 o/p 格式编写逻辑
(ns user
(:require [clojure.string :as str])
(:gen-class))
(defn formatGa4DimensionFilters [stringData]
(doseq [semiFormat (str/split stringData #";")]
(if (str/includes? semiFormat ",")
(def symbolFilter (ga4DimensionFilters semiFormat))
(def symbolFilter2 (get-symbol-for-filter semiFormat))
)
(println symbolFilter2)
(case symbolFilter
"=~" (println "x is =~")
"!~" (println "x is !~")
"=@" (println "x is =@")
"!@" (println "x is !@")
"==" (println "x is ==")
"!=" (println "x is !=")
(println "x is not defined"))
))
(defn ga4DimensionFilters [semiFormat]
(doseq [commaFormat (str/split semiFormat #",")]
(def filterSymbol (get-symbol-for-filter commaFormat))
)
filterSymbol
)
(defn get-symbol-for-filter [string]
(doseq [ga4-filter-symbols ["=~","!~","=@","!@","==","!="]]
(def match-found (str/includes? string ga4-filter-symbols))
(if (boolean match-found)
(def filterMatch ga4-filter-symbols)))
filterMatch)
(def stringData "ga:city==San Jose,ga:city==Bengaluru;ga:country=~India;ga:country!~United States")
(formatGa4DimensionFilters stringData)
请帮助我获得我在下面提到的所需的 json 数据。
输入数据
"ga:city==San Jose,ga:city==Bengaluru;ga:country=~India;ga:country!~United States"
输出数据
{
"andGroup": {
"expressions": [
{
"orGroup": {
"expressions": [
{
"filter": {
"fieldName": "ga:city",
"stringFilter": {
"value": "San Jose",
"matchType": "EXACT"
}
}
},
{
"filter": {
"fieldName": "ga:city",
"stringFilter": {
"value": "Bengaluru",
"matchType": "EXACT"
}
}
}
]
}
},
[
{
"filter": {
"fieldName": "ga:country",
"stringFilter": {
"value": "India",
"matchType": "PARTIAL_REGEXP"
}
}
}
],
[
{
"notExpression": {
"filter": {
"fieldName": "ga:country",
"stringFilter": {
"value": "United States",
"matchType": "PARTIAL_REGEXP"
}
}
}
}
]
]
}
}