golang에서 json 파일을 json 객체로 읽는 방법은 무엇입니까?
로컬 머신에 JSON 파일이 저장되어 있습니다.JSON 객체 값을 가져오려면 변수를 읽고 루프해야 합니다.ioutil을 사용하여 파일을 읽은 후 Marshal 명령을 사용하는 경우.Readfile 메서드는 출력으로 몇 가지 숫자를 제공합니다.몇 번 실패했지만
시행 1:
plan, _ := ioutil.ReadFile(filename) // filename is the JSON file to read
var data interface{}
err := json.Unmarshal(plan, data)
if err != nil {
log.Error("Cannot unmarshal the json ", err)
}
fmt.Println(data)
그것은 나에게 다음과 같은 오류를 주었다.
time="2016-12-13T22:13:05-08:00" level=error msg="Cannot unmarshal the json json: Unmarshal(nil)"
<nil>
시도 2: JSON 값을 구조체에 저장하고 MarshalIndent를 사용하려고 했습니다.
generatePlan, _ := json.MarshalIndent(plan, "", " ") // plan is a pointer to a struct
fmt.Println(string(generatePlan))
출력은 문자열로 표시됩니다.그러나 출력을 문자열에 캐스팅하면 JSON 개체로 루프할 수 없습니다.
골랑에서 JSON 파일을 JSON 오브젝트로 읽으려면 어떻게 해야 하나요?그렇게 할 수 있을까요?어떤 도움이라도 감사합니다.잘 부탁드립니다!
입력되는 값json.Unmarshal
포인터여야 합니다.
GoDoc에서:
Unmarshal은 JSON 인코딩된 데이터를 구문 분석하고 v가 가리키는 값에 결과를 저장합니다.
따라서 다음 작업을 수행해야 합니다.
plan, _ := ioutil.ReadFile(filename)
var data interface{}
err := json.Unmarshal(plan, &data)
오류(Unmarshal(nil))는 파일 읽기 중 문제가 발생했음을 나타냅니다.에서 반환된 오류를 확인하십시오.ioutil.ReadFile
또한 unmarshal에서 빈 인터페이스를 사용할 때는 type assertion을 사용하여 기본 값을 go primitive type으로 가져올 필요가 있습니다.
JSON을 인터페이스 값으로 변환 해제하려면 Unmarshal은 다음 중 하나를 인터페이스 값에 저장합니다.
bool, for JSON booleans float64, for JSON numbers string, for JSON strings []interface{}, for JSON arrays map[string]interface{}, for JSON objects nil for JSON null
콘크리트 구조를 사용하여 json을 채우는 것이 항상 훨씬 더 나은 접근법입니다.Unmarshal
.
2022년에 이걸 보면ioutil
패키지가 더 이상 사용되지 않습니다.아직 사용할 수 있지만, 귀찮은 오류가 발생할 수 있습니다.
대신 os 패키지를 사용할 수 있습니다.
someStruct := SomeStruct{} // Read errors caught by unmarshal
fileBytes, _ := os.ReadFile(filename)
err := json.Unmarshal(fileBytes, spec)
주의하세요, 저는 특히 이 에러를 무시하고 있습니다.os.ReadFile
에러도 일으키기 때문에json.Unmarshal
예를 들어서.
언급URL : https://stackoverflow.com/questions/41135686/how-can-we-read-a-json-file-as-json-object-in-golang
'programing' 카테고리의 다른 글
TypeScript를 사용하여 window.location을 설정합니다. (0) | 2023.03.01 |
---|---|
UI 라우터 URL에서 문자열 매개 변수를 쿼리하시겠습니까? (0) | 2023.03.01 |
Wordpress에서 만든 모든 데이터베이스 쿼리를 표시하는 방법 (0) | 2023.03.01 |
교차 도메인(하위 도메인) 에이잭스 요청에 대한 질문 (0) | 2023.03.01 |
AngularJS - 이미지 "다운로드" 이벤트 (0) | 2023.03.01 |