Need help with hjson-go?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

hjson
233 Stars 26 Forks MIT License 55 Commits 5 Opened issues

Description

Hjson for Go

Services available

!
?

Need anything else?

Contributors list

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.