2016-08-28 3 views
0

データベースからデータをクエリしてJSONとして送信するGo MySQLサーバを設定しようとしています。私のデータベースには、新しいJSONタイプの列がいくつか含まれています。Go REST-APIでMySQL JSONデータ型を転送する

マップ構造体:私はこの

のように、このデータを送信する場合、データベース

func GetMap(id int) Map{ 
var mapId int 
var data string //which type should this be 
var userId int 
var created time.Time 
err := _getMap.QueryRow(id).Scan(&mapId, &data, &userId, &created) //getMap is a prepared query 
mapObj := Map{Id:mapId, Data:data, UserId:userId, Created:created} 

return mapObj 

} 

からデータをフェッチする

type Map struct{ 
Id int `json:"id"` 
Data string `json:"data"` //This column is stored in the database as a JSON. Which type to use here? 
Created time.Time `json:"created"` 
UserId int `json:userid` 
} 

機能

resp.Header().Set("Content-Type", "application/json; charset=UTF-8") 
resp.WriteHeader(http.StatusOK) 
gmap := GetMap(id) 

err := json.NewEncoder(resp).Encode(gmap); 

JSONでデータをそのクライアントは文字列としてフォーマットされます:

{\"field\":\"nowork\"...}

私は問題は、データが間違った形式で解析されることを意味し、構造体の定義で間違ったデータ型によって引き起こされると思います。

データ型を[] uint8、interface {}などに変更しようとしましたが、関連性があると思われるものもありますが、役に立たないものもあります。

+0

JSONエンコード/デコードhttps://github.com/antonholmquist/のためにこれを使用ジェイソン私は同様の問題を抱えていました。私はそのJASONに切り替えて、うまくいきます。 – pregmatch

+0

あなたは何を知っていますか?それは魅力のように機能します!ありがとう – Simopaa

答えて

1

私は、プレグマッチのように、コメントで提案したように、JASONモジュールを使用してJSON解析を処理しようとしました。私の大きな驚きに、それが動作:RESTクライアントで

func GetMap(id int) Map{ 
    var mapId int 
    var data string 
    var userId int 
    var created time.Time 
    err := _getMap.QueryRow(id).Scan(&mapId, &data, &userId, &created) 

    if (err != nil){ 
    log.Print(err) 
    } 
    dataJSON, _ := jason.NewObjectFromBytes([]byte(data)) 
    mapObj := Map{Id:mapId, Data:dataJSON, UserId:userId, Created:created} 
    return mapObj 

} 

は、適切な形式で受け取られます:

{"field":"works!"...}