Popularity
1.1
Declining
Activity
0.0
Stable
10
2
2

Programming language: Go
License: MIT License
Tags: Json    
Latest version: v1.1.1

ej alternatives and similar packages

Based on the "JSON" category.
Alternatively, view ej alternatives based on common mentions on social networks and blogs.

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))
}

HTTP Response

package main

import (
    "log"
    "net/http"

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

type testData struct {
    Count int
    Txt   string
}

func main() {
    var responseData testData
    response, err := http.Get("http://<url>/any")
    if err != nil {
        log.Fatal(err)
    }

    if err := ej.JSON(Response(response)).ParseToData(&responseData); err != nil {
        log.Fatal(err)
    }

    fmt.Printf("dataRead: %+v\n", responseData)
}