Popularity
0.5
Stable
Activity
3.0
Declining
3
1
0

Programming language: Go
Tags: Json    
Latest version: v1.0.0

ej alternatives and similar packages

Based on the "JSON" category

Do you think we are missing an alternative of ej or a related project?

Add another 'JSON' Package

README

Easy Json (EJ)

Go Report Card Build Status Coverage Status GoDoc Mentioned in Awesome Go

Package ej implements a JSON handler to write and read json succinctly from different sources like files and http requests.

Install

go get -u github.com/lucassscaravelli/ej

Examples

File

package main

type exData struct {
    Hello int
    World []string
}

func main() {

    dataWrite := &exData{
        Hello: 1,
        World: []string{"h", "e", "l", "l", "o"},
    }

    var dataRead exData

    // marshal the content of "dataWrite" to JSON and write in "ex.json" file
    if err := ej.JSON(from.File("ex.json")).Write(&dataWrite); err != nil {
        log.Fatal(err)
    }

    // read the data of "ex.json" file and unmarshal the JSON to "dataRead" content
    if err := ej.JSON(from.File("ex.json")).ParseToData(&dataRead); err != nil {
        log.Fatal(err)
    }

    // equal content
    fmt.Printf("dataWrite: %+v\n", dataWrite)
    fmt.Printf("dataRead: %+v\n", dataRead)
}

HTTP Request

package main

import (
    "log"
    "net/http"

    "github.com/lucassscaravelil/ej"
    "github.com/lucassscaravelil/ej/from"
)

type requestPayload struct {
    NumberToFind int
    Numbers      []int
}

type responseErrorPayload struct {
    StatusCode int
    ErrorTxt   string
}

type responsePayload struct {
    Found  bool
    Number int
}

func writeError(jsonHandler *ej.EJ, status int, err error) {
    jsonHandler.Write(&responseErrorPayload{
        StatusCode: status,
        ErrorTxt:   err.Error(),
    })
}

func main() {

    http.HandleFunc("/bar", func(w http.ResponseWriter, r *http.Request) {

        var bodyData requestPayload

        jsonHandler := ej.JSON(from.Request(w, r))

        if err := jsonHandler.ParseToData(&bodyData); err != nil {
            writeError(jsonHandler, http.StatusBadRequest, err)
            return
        }

        found := false
        foundNumber := 0

        for _, number := range bodyData.Numbers {
            if number == bodyData.NumberToFind {
                found = true
                foundNumber = number
                break
            }
        }

        jsonHandler.Write(&responsePayload{
            Found:  found,
            Number: foundNumber,
        })

        return
    })

    log.Fatal(http.ListenAndServe(":8080", nil))
}