Advertisement
xenoside

golang dynamic json embed resource example

Mar 20th, 2024
490
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.31 KB | Source Code | 0 0
  1. // https://harendra21.medium.com/dynamic-json-parsing-in-golang-a1411c9e6cf7
  2. package main
  3.  
  4. import (
  5.     _ "embed"
  6.     "encoding/json"
  7.     "fmt"
  8. )
  9.  
  10. //go:embed test.json
  11. var jsonData []byte
  12.  
  13. func main() {
  14.     // Parse JSON into an empty interface
  15.     var result interface{}
  16.     err := json.Unmarshal(jsonData, &result)
  17.     if err != nil {
  18.         fmt.Println("Error:", err)
  19.         return
  20.     }
  21.  
  22.     // Accessing dynamic JSON fields
  23.     dataMap, ok := result.(map[string]interface{})
  24.     if !ok {
  25.         fmt.Println("Invalid JSON structure")
  26.         return
  27.     }
  28.  
  29.     // Accessing specific fields
  30.     name, nameExists := dataMap["name"].(string)
  31.     age, ageExists := dataMap["age"].(float64)
  32.     city, cityExists := dataMap["city"].(string)
  33.     hasCar, hasCarExists := dataMap["hasCar"].(bool)
  34.     languages, languagesExists := dataMap["languages"].([]interface{})
  35.  
  36.     // Displaying parsed data
  37.     if nameExists {
  38.         fmt.Println("Name:", name)
  39.     }
  40.  
  41.     if ageExists {
  42.         fmt.Println("Age:", int(age))
  43.     }
  44.  
  45.     if cityExists {
  46.         fmt.Println("City:", city)
  47.     }
  48.  
  49.     if hasCarExists {
  50.         fmt.Println("Has Car:", hasCar)
  51.     }
  52.  
  53.     if languagesExists {
  54.         fmt.Println("Languages:")
  55.         for _, lang := range languages {
  56.             fmt.Println(" -", lang)
  57.         }
  58.     }
  59. }
  60.  
  61.  
  62. /* test.json file
  63. {
  64.     "name": "John Doe",
  65.     "age": 30,
  66.     "city": "New York",
  67.     "hasCar": true,
  68.     "languages": ["Go", "JavaScript"]
  69. }
  70. */
Tags: golang
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement