create UnMarshalJSON function to unmarshal json

develop
skanehira 5 years ago
parent 39bed694c0
commit 478923bafe

@ -3,7 +3,9 @@ package gui
import ( import (
"bytes" "bytes"
"encoding/json" "encoding/json"
"errors"
"fmt" "fmt"
"io"
"io/ioutil" "io/ioutil"
"log" "log"
"os" "os"
@ -14,6 +16,10 @@ import (
"github.com/rivo/tview" "github.com/rivo/tview"
) )
var (
ErrEmptyJSON = errors.New("empty json")
)
type Gui struct { type Gui struct {
Tree *Tree Tree *Tree
App *tview.Application App *tview.Application
@ -262,3 +268,21 @@ func (g *Gui) parseValue(node *tview.TreeNode) interface{} {
return v 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 package main
import ( import (
"encoding/json"
"errors"
"flag" "flag"
"fmt" "fmt"
"io/ioutil" "io/ioutil"
@ -21,10 +19,6 @@ var (
url = flag.String("url", "", "get json from url") url = flag.String("url", "", "get json from url")
) )
var (
errEmptyJSON = errors.New("empty json")
)
func printError(err error) int { func printError(err error) int {
fmt.Fprintln(os.Stderr, err) fmt.Fprintln(os.Stderr, err)
return 1 return 1
@ -58,15 +52,11 @@ func run() int {
return printError(err) return printError(err)
} }
b, err := ioutil.ReadAll(resp.Body) i, err := gui.UnMarshalJSON(resp.Body)
if err != nil { if err != nil {
return printError(err) 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 { if err := gui.New().Run(i); err != nil {
return printError(err) return printError(err)
} }
@ -74,18 +64,10 @@ func run() int {
} }
if !terminal.IsTerminal(0) { if !terminal.IsTerminal(0) {
b, err := ioutil.ReadAll(os.Stdin) i, err := gui.UnMarshalJSON(os.Stdin)
if err != nil { if err != nil {
return printError(err) 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 { if err := gui.New().Run(i); err != nil {
log.Println(err) log.Println(err)

Loading…
Cancel
Save