![](/img/trans.png)
[英]Golang JSON to Slice of Maps of Maps themselves Containing Slices (without Types)
[英]Converting json to slice of maps and slice of maps to json in Go without using structs
我正在嘗試將json字符串從http請求轉換為map / s的切片。 而且我還應該將map / s的一部分轉換為json字符串以用於http響應。
我想在以下兩種情況下將以下內容轉換為地圖片段。 來自http請求的json字符串可能是幾個相同鍵值json對象的數組,例如;
[
{ title: 'JavaScript: The Good Parts', author: 'Douglas Crockford',
releaseDate: '2008', keywords: 'JavaScript Programming' },
{ title: 'The Little Book on CoffeeScript', author: 'Alex MacCaw',
releaseDate: '2012', keywords: 'CoffeeScript Programming' },
{ title: 'Scala for the Impatient', author: 'Cay S. Horstmann',
releaseDate: '2012', keywords: 'Scala Programming' },
{ title: 'American Psycho', author: 'Bret Easton Ellis',
releaseDate: '1991', keywords: 'Novel Splatter' },
{ title: 'Eloquent JavaScript', author: 'Marijn Haverbeke',
releaseDate: '2011', keywords: 'JavaScript Programming' }
]
或一個像
{ title: 'Eloquent JavaScript', author: 'Marijn Haverbeke',
releaseDate: '2011', keywords: 'JavaScript Programming' }
第二項任務是將map / s的一部分轉換為json字符串。
但是,我無法成功完成這兩個過程。
我知道json包使對結構執行這兩項任務成為可能。
出於設計方面的考慮,我不應該使用預先編碼的結構。
在Go中是否有已知的方法可以做到這些。
您確實可以使用use map[string]interface{}
,它將與{ "title": ....., "keywords": ["CoffeeScript", "Programming"] }
您必須使用類似:
for i := 0; i < len(b); i++ {
fmt.Printf("%s by %s was release at %s\n", b[i]["title"], b[i]["author"])
switch v := b[i]["keywords"].(type) {
case []interface{}:
for i := 0; i < len(v); i++ {
switch v := v[i].(type) {
case string:
fmt.Println("\tstring in a slice", v)
case float64: //numbers in json are float64 by default
fmt.Println("\tnumber in a slice", v)
default:
fmt.Printf("\tunknown type (%T)", v, v)
}
}
case string:
fmt.Println("\tstring", v)
}
}
你應該使用json.NewDecoder
到JSON轉換成切片地圖和json.NewEncoder
到地圖的片轉換成JSON。
我在這里寫的http://play.golang.org/p/jbXYGC5pp2
請參閱評論中的說明。
我希望這個幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.