GQ 는,
JSON 포멧(string, []byte)의 데이터를 golang 의 특정 struct 또는 동시성을 보장하는 map[string]interface{} 형태로 변환하여 동적으로 속성을 가공 가능하도록 도와줍니다.
go get "github.com/breezymind/gq"
- GetAttrString 예시
strjson := "{\"espresso\": 1.33222, \"americano\": \"1234\"}"
testmap := NewMapByJSONByte([]byte(strjson))
fmt.Println(testmap.GetJSONPretty())
// {
// "americano": "1234",
// "espresso": 1.33222
// }
fmt.Println(testmap.GetAttrString("espresso"))
// 1
fmt.Println(testmap.GetAttrString("americano"))
// 1234
- SetAttrJSONString 예시
newstruct := &TestStruct{
Name: "Tomas",
Age: 20,
Messages: []interface{}{"Hello", "World"},
Gender: "Male",
}
testmap := NewMapByStruct(newstruct)
fmt.Println(testmap.GetJSONString())
// {"age":20,"gender":"Male","messages":["Hello","World"],"name":"Tomas"}
testmap.SetAttrJSONString(
"misc",
"{\"points\":[1,2,3,4],\"name\":\"cacao\"}",
)
fmt.Println(testmap.GetJSONPretty())
// {
// "age": 20,
// "gender": "Male",
// "messages": [
// "Hello",
// "World"
// ],
// "misc": {
// "name": "cacao",
// "points": [
// 1,
// 2,
// 3,
// 4
// ]
// },
// "name": "Tomas"
// }
godoc 에는 더 다양한 예시가 있습니다. 아래
예제보기
를 통해서 보셔도 됩니다.
Map 타입은 GQ 패키지 전반에서 사용할 기본 타입이며, map[string]interface{} 의 alias
이기도 합니다.
NewMap 이름으로 시작하는 메소드는 동시성을 보장하지 않습니다. 동시성 보장이 요구되는 Map 타입은 NewSyncMap 으로 시작하는 메소드를 사용
하세요.
NewMapByJSONByte 은 JSON 포멧의 []byte 를
Map 타입
으로 변환하여 인스턴스를 생성합니다.
NewMapByStruct 은 struct 를
Map 타입
으로 변환하여 인스턴스를 생성합니다.
GetAttrInt 는 Map의 속성값을 integer 로 리턴 합니다.
GetAttrMap 는 Map의 속성값을 Map타입으로 리턴합니다.
GetAttrQuery 는 Map의 속성값을 dot(.)으로 접근하여 가져올 수 있게 합니다.
GetAttrString 는 Map의 속성값을 string 으로 리턴 합니다.
GetJSONByte 는
Map 타입
에 정의된 데이터셋을 JSON 포멧(byte) 으로 리턴합니다
GetJSONPretty 는
Map 타입
에 정의된 데이터셋을 JSON string 으로 보기좋게 리턴합니다
GetJSONString 는
Map 타입
에 정의된 데이터셋을 JSON 포멧(string) 으로 리턴합니다
GetMapInterface 는
Map 타입
을 map[string]interface{} 로 리턴 합니다.
IsExistAttr 는 Map의 속성에 특정 키가 있는지 확인합니다.
SetAttr 는
Map 타입
데이터 셋에 새로운 속성값을 interface{} 타입으로 정의합니다.
SetAttrJSONByte 는
Map 타입
데이터 셋에 새로운 속성값을 JSON 포멧형태의 값(byte)으로 정의 합니다.
SetAttrJSONString 는 Map에 새로운 key/value를 정의하며, value 값은 JSON 값(string)으로 참조하여 정의 합니다.
SetAttrMap 는
Map 타입
데이터 셋에 새로운 속성값을Map 타입
으로 정의합니다.
SetAttrQuery 는 Map의 속성값을 dot(.)으로 접근하여 정의할 수 있습니다.
SetJSONByte 는 JSON 포멧 형태의 []byte를
Map 타입
으로 재정의합니다.
SetJSONString 는 JSON 포멧 형태의 string을
Map 타입
으로 재정의합니다.
SetStruct 는 Struct를
Map 타입
으로 재정의합니다.
SyncMap 타입은 "Map" 타입과 동일한 메소드들을 제공하며, mutex 로 동시성을 보장
합니다.
Map2Struct 는 map[string]interface{}를 struct 로 변환합니다
InterfaceSlice2StringSlice - 예제보기
InterfaceSlice2StringSlice 는 Interface{} 타입의 슬라이스를 String 타입의 슬라이스로 변경합니다
JSONByte2Struct 는 JSON 포멧 형태의 []byte를 struct 로 변환합니다
JSONString2Struct 는 JSON 포멧 형태의 string을 struct 로 변환합니다
Struct2JSONString 는 Struct를 JSON 포멧으로 변환하여 string 로 리턴합니다
Struct2JSONByte 는 Struct를 JSON 포멧으로 변환하여 []byte 로 리턴합니다
- gq slice
- gq map, test example, godoc 작성
- gq syncmap, test example, godoc 작성
- misc, test example 작성
- misc, godoc comment