create UnMarshalJSON function to unmarshal json

develop
skanehira 5 years ago
parent 39bed694c0
commit 478923bafe

@ -3,7 +3,9 @@ package gui
import (
"bytes"
"encoding/json"
"errors"
"fmt"
"io"
"io/ioutil"
"log"
"os"
@ -14,6 +16,10 @@ import (
"github.com/rivo/tview"
)
var (
ErrEmptyJSON = errors.New("empty json")
)
type Gui struct {
Tree *Tree
App *tview.Application
@ -262,3 +268,21 @@ func (g *Gui) parseValue(node *tview.TreeNode) interface{} {
return v
}
func UnMarshalJSON(in io.Reader) (interface{}, error) {
b, err := ioutil.ReadAll(in)
if err != nil {
return nil, err
}
if len(b) == 0 {
log.Println(err)
return nil, ErrEmptyJSON
}
var i interface{}
if err := json.Unmarshal(b, &i); err != nil {
log.Println(err)
return nil, err
}
return i, nil
}

@ -1,8 +1,6 @@
package main
import (
"encoding/json"
"errors"
"flag"
"fmt"
"io/ioutil"
@ -21,10 +19,6 @@ var (
url = flag.String("url", "", "get json from url")
)
var (
errEmptyJSON = errors.New("empty json")
)
func printError(err error) int {
fmt.Fprintln(os.Stderr, err)
return 1
@ -58,15 +52,11 @@ func run() int {
return printError(err)
}
b, err := ioutil.ReadAll(resp.Body)
i, err := gui.UnMarshalJSON(resp.Body)
if err != nil {
return printError(err)
}
var i interface{}
if err := json.Unmarshal(b, &i); err != nil {
return printError(err)
}
if err := gui.New().Run(i); err != nil {
return printError(err)
}
@ -74,18 +64,10 @@ func run() int {
}
if !terminal.IsTerminal(0) {
b, err := ioutil.ReadAll(os.Stdin)
i, err := gui.UnMarshalJSON(os.Stdin)
if err != nil {
return printError(err)
}
if len(b) == 0 {
return printError(err)
}
var i interface{}
if err := json.Unmarshal(b, &i); err != nil {
return printError(err)
}
if err := gui.New().Run(i); err != nil {
log.Println(err)

Loading…
Cancel
Save