Skip to content

Commit

Permalink
fix: 修复导入kv时针对转义的json字符串做处理 (#2982)
Browse files Browse the repository at this point in the history
  • Loading branch information
Ambition9186 authored Feb 27, 2024
1 parent 3775b3a commit 5cf70c2
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 18 deletions.
11 changes: 10 additions & 1 deletion bcs-services/bcs-bscp/cmd/api-server/service/kv.go
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,16 @@ func handleKv(result map[string]interface{}) ([]*pbcs.BatchUpsertKvsReq_Kv, erro
if err != nil {
return nil, fmt.Errorf("key: %s json marshal error", key)
}
val = string(mv)
// 需要处理转义符
var data interface{}
err = json.Unmarshal(mv, &data)
if err != nil {
return nil, fmt.Errorf("key: %s json unmarshal error", key)
}
val, ok = data.(string)
if !ok {
return nil, fmt.Errorf("key: %s format error", key)
}
} else if kvType == string(table.KvYAML) {
_, ok := kvValue.(string)
if !ok {
Expand Down
19 changes: 2 additions & 17 deletions bcs-services/bcs-bscp/cmd/api-server/service/released_kv.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ import (
"errors"
"fmt"
"net/http"
"reflect"
"strconv"

"github.com/go-chi/chi/v5"
Expand Down Expand Up @@ -201,16 +200,9 @@ func rkvsToOutData(details []*pbrkv.ReleasedKv) map[string]interface{} {
for _, rkv := range details {
var value interface{}
value = rkv.Spec.Value
switch rkv.Spec.KvType {
case string(table.KvNumber):
if rkv.Spec.KvType == string(table.KvNumber) {
i, _ := strconv.Atoi(rkv.Spec.Value)
value = i
case string(table.KvJson):
_ = json.Unmarshal([]byte(rkv.Spec.Value), &value)
if reflect.TypeOf(value).Kind() != reflect.String {
jm, _ := json.Marshal(value)
value = string(jm)
}
}
d[rkv.Spec.Key] = map[string]interface{}{
"kv_type": rkv.Spec.KvType,
Expand All @@ -226,16 +218,9 @@ func kvsToOutData(details []*pbkv.Kv) map[string]interface{} {
for _, rkv := range details {
var value interface{}
value = rkv.Spec.Value
switch rkv.Spec.KvType {
case string(table.KvNumber):
if rkv.Spec.KvType == string(table.KvNumber) {
i, _ := strconv.Atoi(rkv.Spec.Value)
value = i
case string(table.KvJson):
_ = json.Unmarshal([]byte(rkv.Spec.Value), &value)
if reflect.TypeOf(value).Kind() != reflect.String {
jm, _ := json.Marshal(value)
value = string(jm)
}
}
d[rkv.Spec.Key] = map[string]interface{}{
"kv_type": rkv.Spec.KvType,
Expand Down

0 comments on commit 5cf70c2

Please sign in to comment.