In Go, JSON and XML are common data interchange formats. The encoding/json
and encoding/xml
packages are used to work with these formats. These packages allow you to parse, encode, and decode JSON and XML data. Below, we will look at examples of working with both JSON and XML in Go.
JSON (JavaScript Object Notation) is a popular data format used for data exchange. In Go, the encoding/json
package is used to work with JSON data.
To read JSON data and convert it into a Go struct, we use json.Unmarshal
.
🔹 Example: Parsing JSON into a Struct
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
// JSON data
jsonData := `{"name": "Alice", "age": 30}`
var p Person
// Parse JSON data into a struct
err := json.Unmarshal([]byte(jsonData), &p)
if err != nil {
fmt.Println("Error parsing JSON:", err)
return
}
// Print the parsed data
fmt.Println("Name:", p.Name)
fmt.Println("Age:", p.Age)
}
🔹 Output:
Name: Alice
Age: 30
👉 In this example:
json.Unmarshal
converts the JSON data string into a Go struct.json:"name"
tag.To convert a Go struct into JSON data, we use json.Marshal
.
🔹 Example: Encoding a Struct into JSON
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
p := Person{Name: "Bob", Age: 25}
// Convert struct to JSON
jsonData, err := json.Marshal(p)
if err != nil {
fmt.Println("Error encoding JSON:", err)
return
}
// Print the JSON data
fmt.Println(string(jsonData))
}
🔹 Output:
{"name":"Bob","age":25}
👉 Here:
json.Marshal
converts the Go struct into JSON format.json:"name"
).Go also provides support for XML through the encoding/xml
package, similar to JSON. You can use this package to parse and encode XML data.
To read XML data and convert it into a Go struct, we use xml.Unmarshal
.
🔹 Example: Parsing XML into a Struct
package main
import (
"encoding/xml"
"fmt"
)
type Person struct {
Name string `xml:"name"`
Age int `xml:"age"`
}
func main() {
// XML data
xmlData := `<Person><name>Alice</name><age>30</age></Person>`
var p Person
// Parse XML data into a struct
err := xml.Unmarshal([]byte(xmlData), &p)
if err != nil {
fmt.Println("Error parsing XML:", err)
return
}
// Print the parsed data
fmt.Println("Name:", p.Name)
fmt.Println("Age:", p.Age)
}
🔹 Output:
Name: Alice
Age: 30
👉 In this example:
xml.Unmarshal
converts the XML data string into a Go struct.xml:"name"
tag.To convert a Go struct into XML data, we use xml.Marshal
.
🔹 Example: Encoding a Struct into XML
package main
import (
"encoding/xml"
"fmt"
)
type Person struct {
Name string `xml:"name"`
Age int `xml:"age"`
}
func main() {
p := Person{Name: "Bob", Age: 25}
// Convert struct to XML
xmlData, err := xml.Marshal(p)
if err != nil {
fmt.Println("Error encoding XML:", err)
return
}
// Print the XML data
fmt.Println(string(xmlData))
}
🔹 Output:
<Person><name>Bob</name><age>25</age></Person>
👉 Here:
xml.Marshal
converts the Go struct into XML format.xml:"name"
tag.encoding/json
and encoding/xml
packages.json.Unmarshal
/xml.Unmarshal
.json.Marshal
/xml.Marshal
.json:"name"
and xml:"name"
tags.This is how Go allows efficient and effective handling of both JSON and XML data formats.
Go তে JSON এবং XML ডাটা ফরম্যাটের সাথে কাজ করার জন্য encoding/json
এবং encoding/xml
প্যাকেজগুলি ব্যবহার করা হয়। এই প্যাকেজগুলি আপনাকে JSON এবং XML ডাটা পার্স, এনকোড, এবং ডিকোড করতে সাহায্য করে। নিচে আমরা JSON এবং XML এর সাথে কাজ করার জন্য কিছু উদাহরণ দেখব।
JSON (JavaScript Object Notation) একটি জনপ্রিয় ডাটা এক্সচেঞ্জ ফরম্যাট। Go তে JSON এর সাথে কাজ করার জন্য encoding/json
প্যাকেজটি ব্যবহৃত হয়।
JSON ডাটা পড়তে এবং Go এর স্ট্রাক্টে কনভার্ট করতে json.Unmarshal
ব্যবহার করা হয়।
🔹 উদাহরণ: JSON থেকে স্ট্রাক্টে ডাটা পড়া
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
// JSON ডাটা
jsonData := `{"name": "Alice", "age": 30}`
var p Person
// JSON ডাটা পার্স করে স্ট্রাক্টে কনভার্ট করা
err := json.Unmarshal([]byte(jsonData), &p)
if err != nil {
fmt.Println("JSON পার্স করতে সমস্যা:", err)
return
}
// পার্স করা ডাটা প্রিন্ট করা
fmt.Println("Name:", p.Name)
fmt.Println("Age:", p.Age)
}
🔹 আউটপুট:
Name: Alice
Age: 30
👉 এখানে:
json.Unmarshal
JSON ডাটা স্ট্রিং থেকে Go স্ট্রাক্টে কনভার্ট করে।json:"name"
ট্যাগ ব্যবহার করে JSON এর কীগুলোর সাথে স্ট্রাক্ট ফিল্ডগুলোর সম্পর্ক নির্ধারণ করা হয়েছে।Go এর স্ট্রাক্ট থেকে JSON ডাটা তৈরি করতে json.Marshal
ব্যবহার করা হয়।
🔹 উদাহরণ: স্ট্রাক্ট থেকে JSON তৈরি করা
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
p := Person{Name: "Bob", Age: 25}
// স্ট্রাক্ট থেকে JSON ডাটা তৈরি করা
jsonData, err := json.Marshal(p)
if err != nil {
fmt.Println("JSON এনকোড করতে সমস্যা:", err)
return
}
// JSON ডাটা প্রিন্ট করা
fmt.Println(string(jsonData))
}
🔹 আউটপুট:
{"name":"Bob","age":25}
👉 এখানে:
json.Marshal
স্ট্রাক্টকে JSON ফরম্যাটে কনভার্ট করে।json:"name"
ট্যাগ অনুযায়ী আসে।Go তে XML ডাটা পার্স এবং এনকোড করার জন্য encoding/xml
প্যাকেজটি ব্যবহৃত হয়। এটি JSON এর মতোই কাজ করে, তবে XML ডাটা এবং স্ট্রাক্টের মধ্যে সম্পর্ক স্থাপন করার জন্য XML ট্যাগ ব্যবহার করা হয়।
XML ডাটা পড়তে এবং Go এর স্ট্রাক্টে কনভার্ট করতে xml.Unmarshal
ব্যবহার করা হয়।
🔹 উদাহরণ: XML থেকে স্ট্রাক্টে ডাটা পড়া
package main
import (
"encoding/xml"
"fmt"
)
type Person struct {
Name string `xml:"name"`
Age int `xml:"age"`
}
func main() {
// XML ডাটা
xmlData := `<Person><name>Alice</name><age>30</age></Person>`
var p Person
// XML ডাটা পার্স করে স্ট্রাক্টে কনভার্ট করা
err := xml.Unmarshal([]byte(xmlData), &p)
if err != nil {
fmt.Println("XML পার্স করতে সমস্যা:", err)
return
}
// পার্স করা ডাটা প্রিন্ট করা
fmt.Println("Name:", p.Name)
fmt.Println("Age:", p.Age)
}
🔹 আউটপুট:
Name: Alice
Age: 30
👉 এখানে:
xml.Unmarshal
XML ডাটা স্ট্রিং থেকে Go স্ট্রাক্টে কনভার্ট করে।xml:"name"
ট্যাগ ব্যবহার করে XML এর ট্যাগগুলোর সাথে স্ট্রাক্ট ফিল্ডগুলোর সম্পর্ক নির্ধারণ করা হয়েছে।Go এর স্ট্রাক্ট থেকে XML ডাটা তৈরি করতে xml.Marshal
ব্যবহার করা হয়।
🔹 উদাহরণ: স্ট্রাক্ট থেকে XML তৈরি করা
package main
import (
"encoding/xml"
"fmt"
)
type Person struct {
Name string `xml:"name"`
Age int `xml:"age"`
}
func main() {
p := Person{Name: "Bob", Age: 25}
// স্ট্রাক্ট থেকে XML ডাটা তৈরি করা
xmlData, err := xml.Marshal(p)
if err != nil {
fmt.Println("XML এনকোড করতে সমস্যা:", err)
return
}
// XML ডাটা প্রিন্ট করা
fmt.Println(string(xmlData))
}
🔹 আউটপুট:
<Person><name>Bob</name><age>25</age></Person>
👉 এখানে:
xml.Marshal
স্ট্রাক্টকে XML ফরম্যাটে কনভার্ট করে।xml:"name"
ট্যাগ অনুযায়ী আসে।encoding/json
এবং encoding/xml
প্যাকেজ ব্যবহার করা হয়।json.Unmarshal
এবং json.Marshal
, XML এ xml.Unmarshal
এবং xml.Marshal
ব্যবহার করে ডাটা কনভার্ট করা হয়।json:"fieldname"
বা xml:"fieldname"
ট্যাগ ব্যবহার করে ফিল্ডগুলোর সাথে ডাটা ফরম্যাটের কীগুলোর সম্পর্ক নির্ধারণ করা হয়।এইভাবে, Go তে JSON এবং XML ডাটা ফরম্যাটের সাথে কাজ করা সহজ এবং কার্যকরী।