Rumah > pembangunan bahagian belakang > Golang > Bagaimana Anda Membaca Fail JSON sebagai Objek dalam Go?

Bagaimana Anda Membaca Fail JSON sebagai Objek dalam Go?

Mary-Kate Olsen
Lepaskan: 2024-11-15 00:57:02
asal
361 orang telah melayarinya

How Do You Read JSON Files as Objects in Go?

Reading JSON Files as Object in Go

In Go, you can encounter difficulties when attempting to read a JSON file and parse it as a JSON object.

Failed Attempts

Some failed attempts to read JSON files as objects include:

  • Attempt 1:
plan, _ := ioutil.ReadFile(filename) // filename is the JSON file to read
var data interface{}
err := json.Unmarshal(plan, data)
Salin selepas log masuk

This results in the error "json: Unmarshal(nil)".

  • Attempt 2:
generatePlan, _ := json.MarshalIndent(plan, "", " ") // plan is a pointer to a struct
Salin selepas log masuk

This produces a string output, but casting it to a string makes it impossible to loop through as a JSON object.

Solution

The key to resolving this issue lies in the value pointed to by json.Unmarshal. It must be a pointer.

plan, _ := ioutil.ReadFile(filename)
var data interface{}
err := json.Unmarshal(plan, &data)
Salin selepas log masuk

Type Assertion

When using an empty interface in unmarshal, you need to use type assertion to get underlying values as native Go types:

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
Salin selepas log masuk

Best Practice

It's highly recommended to use a concrete structure to populate JSON data using Unmarshal. This provides better clarity and avoids the need for type assertions.

Atas ialah kandungan terperinci Bagaimana Anda Membaca Fail JSON sebagai Objek dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan