猿问

从(json)字符串中删除无效字符

我正在 go 程序中执行一个命令,该命令为我提供了一些带有结构的输出


  c := exec.Command("mycommand")

  stdout, _ := c.Output()

输出


{

 'name': 'mike',

 'phone': '12345'

},

{

 'name': 'jim',

 'phone': '1234'

}, //notice the final comma

为了使 json 有效,我尝试先[添加然后附加],最后删除最后一个逗号。


k := "["

mystring := string(stdout)

k += mystring

k += "]"

str := strings.Replace(k, "},]", "}]", -1)


w.Header().Set("Content-Type", "application/json; charset=utf-8")

fmt.Fprintf(w, str)

当我将最终产品放入 json 验证器时,出现此错误


Error: Parse error on line 1:

[{  

---^

Expecting 'STRING', '}', got 'undefined'

问题:有没有办法在字符串上执行 json.Compact 或类似的操作,或者在这种情况下如何制作有效的 json?


更新


这是我的编码魔法产生的输出。我不确定它到底是哪一部分invalid


[{

  'name': 'Leroy',

  'phone': '12345'

},

{

  'name': 'Jimmy',

  'phone': '23456'

}]


慕尼黑8549860
浏览 175回答 1
1回答

FFIVE

正如 JimB 在评论中指出的,单引号不是有效的 json。所以如果你运行另一个字符串替换k = strings.Replace(k, `'`, `"`, -1)来产生这个;[{    "name": "Leroy",    "phone": "12345"}, {    "name": "Jimmy",    "phone": "23456"}]然后它应该像你期望的那样工作。
随时随地看视频慕课网APP

相关分类

Go
我要回答