hjson-go

by hjson

hjson / hjson-go

Hjson for Go

217 Stars 26 Forks Last release: about 1 month ago (v3.1.0) MIT License 54 Commits 9 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

hjson-go

Build Status Go Pkg Go Report Card coverage godoc

Hjson Intro

{
  # specify rate in requests/second (because comments are helpful!)
  rate: 1000

// prefer c-style comments? /* feeling old fashioned? */

did you notice that rate doesn't need quotes?

hey: look ma, no quotes for strings either!

best of all

notice: [] anything: ?

yes, commas are optional!

}

The Go implementation of Hjson is based on hjson-js. For other platforms see hjson.github.io.

Install

Make sure you have a working Go environment. See the install instructions.

  1. Get the sources
    bash
    $ go get -u github.com/hjson/hjson-go
    
  2. Build the hjson-cli commandline tool (optional)
    bash
    $ cd $(go env GOPATH)/src/github.com/hjson/hjson-go/hjson-cli && go install
    $ hjson-cli --version
    
    # Usage as command line tool ``` usage: hjson-cli [OPTIONS] [INPUT] hjson can be used to convert JSON from/to Hjson.

hjson will read the given JSON/Hjson input file or read from stdin.

Options: -allowMinusZero Allow -0. -bracesSameLine Print braces on the same line. -c Output as JSON. -h Show this screen. -indentBy string The indent string. (default " ") -j Output as formatted JSON. -omitRootBraces Omit braces at the root. -quoteAlways Always quote string values. ```

Sample: - run

hjson-cli test.json > test.hjson
to convert to Hjson - run
hjson-cli -j test.hjson > test.json
to convert to JSON

Usage as a GO library

package main

import ( "github.com/hjson/hjson-go" "fmt" )

func main() {

// Now let's look at decoding Hjson data into Go
// values.
sampleText := []byte(`
{
    # specify rate in requests/second
    rate: 1000
    array:
    [
        foo
        bar
    ]
}`)

// We need to provide a variable where Hjson
// can put the decoded data.
var dat map[string]interface{}

// Decode and a check for errors.
if err := hjson.Unmarshal(sampleText, &dat); err != nil {
    panic(err)
}
fmt.Println(dat)

// In order to use the values in the decoded map,
// we'll need to cast them to their appropriate type.

rate := dat["rate"].(float64)
fmt.Println(rate)

array := dat["array"].([]interface{})
str1 := array[0].(string)
fmt.Println(str1)


// To encode to Hjson with default options:
sampleMap := map[string]int{"apple": 5, "lettuce": 7}
hjson, _ := hjson.Marshal(sampleMap)
// this is short for:
// options := hjson.DefaultOptions()
// hjson, _ := hjson.MarshalWithOptions(sampleMap, options)
fmt.Println(string(hjson))

}

If you prefer, you can also unmarshal to Go objects by converting to JSON:

package main

import ( "github.com/hjson/hjson-go" "encoding/json" "fmt" )

type Sample struct { Rate int Array []string }

func main() {

sampleText := []byte(`
{
    # specify rate in requests/second
    rate: 1000
    array:
    [
        foo
        bar
    ]
}`)

// read Hjson
var dat map[string]interface{}
hjson.Unmarshal(sampleText, &dat)

// convert to JSON
b, _ := json.Marshal(dat)

// unmarshal
var sample Sample
json.Unmarshal(b, &sample)

fmt.Println(sample.Rate)
fmt.Println(sample.Array)

}

API

godoc

History

see releases

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.