2016-12-20 17 views
0

にカサンドラあちこちJSONを作成します。私が使用しては、私は次のように定義カサンドラのテーブルを持って行く

type Book struct { 
     Title  string  `json:"title"` 
     Amount  inf.Dec  `json:"amount"` 
     CreatedOn time.Time `json:"createdon"` 
     Available int   `json:"available"` 
    } 

func cassandraDisplay(query string, w http.ResponseWriter) { 
    cluster := gocql.NewCluster("xxxxxxxx:xxxx") 
    session, _ := cluster.CreateSession() 
    defer session.Close() 
    iter := session.Query("SELECT * FROM book.book").Iter() 
    var book Book 
    for iter.Scan(&book.Title ,&book.Amount ,&book.CreatedOn,&book.Available{ 
      fmt.Println(book.Title , book.Amount,book.CreatedO,book.Available) 
      j, ERR:= json.Marshal(&iter) 
      if ERR != nil {panic(ERR)} 
      //do things with j 
    } 
    if err := iter.Close(); err != nil {log.Fatal(err)} 
} 

が、要件は、ダイナミックで何のハード任意の情報をコード化しないが必要なことを達成することができています。これはHTTPサービスであり、クエリはURLを通過します。

これをどのように動作させるか考えてください。

+0

多分このようなもの:https://github.com/Jeffail/gabs – RickyA

答えて

0

@Michael、

あなたはMapScanを使用することもできます。https://godoc.org/github.com/gocql/gocql#Iter.MapScan これはそれが得ることができるよう抽象的です。 https://github.com/gocql/gocql/blob/master/cassandra_test.goから:

... 
testMap := make(map[string]interface{}) 
if !session.Query(`SELECT * FROM slice_map_table`).Iter().MapScan(testMap) { 
     t.Fatal("MapScan failed to work with one row") 
} 
... 

その後、あなたが反映/地図コンテンツを探索する必要がありますが、それは別のトピックです。

+0

ありがとうございます!それは私が正確に必要なものをした:) – Michael

関連する問題