Giter VIP home page Giter VIP logo

jason's Introduction

Jason

Go module to better process and use dynamic JSON.
https://pkg.go.dev/github.com/benstigsen/jason

Example

{
    "videos": [
        {
            "title": "My video!",
            "tags": ["drama", "romantic"],
            "seconds": 513,
            "metadata": null
        },
        {
            "title": "Another one!",
            "tags": ["comedy"],
            "seconds": 123,
            "metadata": {
                "creator": "benjamin",
                "format": "mp4"
            }
        }
    ]
}
import (
	"fmt"
	"github.com/benstigsen/jason"
)

type VideoMetadata struct {
	Creator string `json:"creator"`
	Format  string `json:"format"`
}

func main() {
	data, err := os.ReadFile("videodata.json")
	if err != nil {
		panic(err)
	}

	content, err := jason.Unmarshal(data)
	if err != nil {
		panic(err)
	}

	videos := content.GetObjectArray("videos")
	for _, video := range videos {
		fmt.Println("title:", video.GetString("title"))
		fmt.Println("tags:", video.GetStringArray("tags"))
		fmt.Println("seconds:", video.GetNumber("seconds"))

		if video.IsValid("metadata") {
			meta := VideoMetadata{}
			video.GetObject("metadata").Unmarshal(&meta)
			fmt.Println("metadata:", meta)
		}

		fmt.Println("---")
	}
}

Output:

title: My video!
tags: [drama romantic]
seconds: 513
---
title: Another one!
tags: [comedy]
seconds: 123
metadata: {benjamin mp4}
---

Another way to access the metadata of a video would be:

content.GetObjectArray("videos")[1].GetString("metadata", "creator")

jason's People

Stargazers

Benjamin Stigsen avatar

Watchers

Benjamin Stigsen avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.