2015-12-14 97 views
0

我现在在一家围棋程序,给了我与结构去除(JSON)字符串

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' 
}] 
+0

你可以用最终的json更新吗? – evanmcdonnal

+0

@evanmcdonnal我用最终输出更新了OP。感谢您的期待 – Leahcim

+1

单引号也是无效的json。你能解决什么是产生这种输出? – JimB

回答

1

由于JimB在评论中指出的单引号是不是有效的JSON。所以如果你运行另一个字符串替换k = strings.Replace(k, `'`, `"`, -1)来产生这个;

[{ 
    "name": "Leroy", 
    "phone": "12345" 
}, { 
    "name": "Jimmy", 
    "phone": "23456" 
}] 

然后,它应该如你所愿。

+1

请注意,只要遇到转义引号,就不会起作用。 – JimB