2015-12-14 96 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