2014-11-02 177 views
-2

我想要解析的JSON非常基本,看起來像這樣。Golang解析JSON返回0

{"id": 3, "title":"Test"} 

以下是我嘗試用於創建和解析JSON的代碼。

package main 

import (
    "fmt" 
    "encoding/json" 
) 

type Config struct{ 
    id int 
    title string 
} 

func main() { 
    var jsonStr = []byte(`{"id": 3, "title":"Test"}`) 
    var conf Config 
    err := json.Unmarshal(jsonStr, &conf) 
    if err!=nil{ 
      fmt.Print("Error:",err) 
    } 
    fmt.Println(conf) 
    fmt.Println(string(jsonStr)) 
} 

一直在尋找很多不同的代碼示例,無法看到我做錯了什麼。當我試圖運行這個時,這是我得到的回報。

{0 } 
{"id": 3, "title":"Test"} 

我已驗證JSON是有效的,但在嘗試使用json.Unmarshal時會繼續獲得空回返。關於我缺少的任何想法,以便我可以解析這個JSON?

編輯:看起來像我可以得到這個工作,如果我大寫標題(Id,標題)。不幸的是,我測試的回報是從API返回,它以小寫形式返回所有內容。我需要能夠用上面列出的小寫標題解析這個JSON。

回答

3

您的Config struct的字段需要導出(大寫),但JSON對象中的鍵可能保持小寫。

在這裏看到:http://play.golang.org/p/0A5tkCkSO5

+0

我可以發誓我試過了,但當然它的工作完美。謝謝! – 2014-11-02 19:43:38

2

請諮詢JSON package documentation,值得一讀。雖然Amit已經解決的問題,出口我將解決以下問題:

編輯:看起來像我能得到這個工作,如果我把握的標題(ID,標題)。不幸的是,我測試的回報是從API返回,它以小寫形式返回所有內容。我需要能夠用上面列出的小寫標題解析這個JSON。

正如你可能想象的那樣,encoding/json的作者已經想到了,所以我再次鼓勵你下次參考文檔。解決辦法是這樣的(Example on playground):

type Config struct { 
    Id int `json:"id"` 
    Title string `json:"title"` 
} 
+2

注意介紹性文章「JSON和Go」也很有用:http://blog.golang.org/json-and-go。 – dyoo 2014-11-02 21:23:15