Skip to content

JSON 포멧(string, []byte)의 데이터를 golang 의 특정 struct 또는 map[string]interface{} 형태로 변환하여 동적으로 속성을 가공 가능하도록 도와줍니다.

breezymind/gq

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GQ GoDoc

GQ 는,

JSON 포멧(string, []byte)의 데이터를 golang 의 특정 struct 또는 동시성을 보장하는 map[string]interface{} 형태로 변환하여 동적으로 속성을 가공 가능하도록 도와줍니다.

Installation

go get "github.com/breezymind/gq"

Usage

  • 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

Map 타입은 GQ 패키지 전반에서 사용할 기본 타입이며, map[string]interface{} 의 alias 이기도 합니다.

NewMap 이름으로 시작하는 메소드는 동시성을 보장하지 않습니다. 동시성 보장이 요구되는 Map 타입은 NewSyncMap 으로 시작하는 메소드를 사용하세요.

NewMapByJSONByte - 예제보기

NewMapByJSONByte 은 JSON 포멧의 []byte 를 Map 타입으로 변환하여 인스턴스를 생성합니다.

NewMapByStruct - 예제보기

NewMapByStruct 은 struct 를 Map 타입으로 변환하여 인스턴스를 생성합니다.

Map.GetAttrInt - 예제보기

GetAttrInt 는 Map의 속성값을 integer 로 리턴 합니다.

Map.GetAttrMap - 예제보기

GetAttrMap 는 Map의 속성값을 Map타입으로 리턴합니다.

Map.GetAttrQuery - 예제보기

GetAttrQuery 는 Map의 속성값을 dot(.)으로 접근하여 가져올 수 있게 합니다.

Map.GetAttrString - 예제보기

GetAttrString 는 Map의 속성값을 string 으로 리턴 합니다.

Map.GetJSONByte - 예제보기

GetJSONByte 는 Map 타입에 정의된 데이터셋을 JSON 포멧(byte) 으로 리턴합니다

Map.GetJSONPretty - 예제보기

GetJSONPretty 는 Map 타입에 정의된 데이터셋을 JSON string 으로 보기좋게 리턴합니다

Map.GetJSONString - 예제보기

GetJSONString 는 Map 타입에 정의된 데이터셋을 JSON 포멧(string) 으로 리턴합니다

Map.GetMapInterface - 예제보기

GetMapInterface 는 Map 타입을 map[string]interface{} 로 리턴 합니다.

Map.IsExistAttr - 예제보기

IsExistAttr 는 Map의 속성에 특정 키가 있는지 확인합니다.

Map.SetAttr - 예제보기

SetAttr 는 Map 타입 데이터 셋에 새로운 속성값을 interface{} 타입으로 정의합니다.

Map.SetAttrJSONByte - 예제보기

SetAttrJSONByte 는 Map 타입 데이터 셋에 새로운 속성값을 JSON 포멧형태의 값(byte)으로 정의 합니다.

Map.SetAttrJSONString - 예제보기

SetAttrJSONString 는 Map에 새로운 key/value를 정의하며, value 값은 JSON 값(string)으로 참조하여 정의 합니다.

Map.SetAttrMap - 예제보기

SetAttrMap 는 Map 타입 데이터 셋에 새로운 속성값을 Map 타입으로 정의합니다.

Map.SetAttrQuery - 예제보기

SetAttrQuery 는 Map의 속성값을 dot(.)으로 접근하여 정의할 수 있습니다.

Map.SetJSONByte - 예제보기

SetJSONByte 는 JSON 포멧 형태의 []byte를 Map 타입으로 재정의합니다.

Map.SetJSONString - 예제보기

SetJSONString 는 JSON 포멧 형태의 string을 Map 타입으로 재정의합니다.

Map.SetStruct - 예제보기

SetStruct 는 Struct를 Map 타입으로 재정의합니다.


syncmap

SyncMap 타입은 "Map" 타입과 동일한 메소드들을 제공하며, mutex 로 동시성을 보장합니다.


misc

Map2Struct - 예제보기

Map2Struct 는 map[string]interface{}를 struct 로 변환합니다

InterfaceSlice2StringSlice - 예제보기

InterfaceSlice2StringSlice 는 Interface{} 타입의 슬라이스를 String 타입의 슬라이스로 변경합니다

JSONByte2Struct - 예제보기

JSONByte2Struct 는 JSON 포멧 형태의 []byte를 struct 로 변환합니다

JSONString2Struct - 예제보기

JSONString2Struct 는 JSON 포멧 형태의 string을 struct 로 변환합니다

Struct2JSONByte - 예제보기

Struct2JSONString 는 Struct를 JSON 포멧으로 변환하여 string 로 리턴합니다

Struct2JSONString - 예제보기

Struct2JSONByte 는 Struct를 JSON 포멧으로 변환하여 []byte 로 리턴합니다

Todos

  • gq slice
  • gq map, test example, godoc 작성
  • gq syncmap, test example, godoc 작성
  • misc, test example 작성
  • misc, godoc comment

License

MIT license

About

JSON 포멧(string, []byte)의 데이터를 golang 의 특정 struct 또는 map[string]interface{} 형태로 변환하여 동적으로 속성을 가공 가능하도록 도와줍니다.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages