Печатать / Журнал полный неструктурированный json из потока в Go - PullRequest
0 голосов
/ 24 апреля 2020

Я унаследовал чужой код для API, и, поскольку я не знаком с запросами, которые он получает, я пытаюсь распечатать или зарегистрировать их, чтобы увидеть их структуру. Из того, что я прочитал о Go, jsons декодируются с помощью Structs, но, поскольку я не знаю, как принимаются запросы, я не могу написать структуру.

Я попробовал следующее на основе c API, но они просто распечатывают мне пустую карту или вообще ничего:

func createBook(w http.ResponseWriter, r *http.Request) {
    var result map[string]interface{}
    _ = json.NewDecoder(r.Body).Decode(&result)
    fmt.Println(result)

func createBook(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")
    var book Book
    _ = json.NewDecoder(r.Body).Decode(&book)

    buf := new(bytes.Buffer)
    buf.ReadFrom(r.Body)
    newStr := buf.String()

    reader := strings.NewReader(newStr)
    writter := os.Stdout

    dec := json.NewDecoder(reader)
    enc := json.NewEncoder(writter)

    for {
        var m map[string]interface{}
        if err := dec.Decode(&m); err == io.EOF {
            break
        } else if err != nil {
            log.Fatal(err)
        }

        if err := enc.Encode(&m); err != nil {
            log.Println(err)
        }
        fmt.Println(m)
    }

    book.ID = strconv.Itoa(rand.Intn(100000000)) // Mock ID - not safe
    books = append(books, book)
    json.NewEncoder(w).Encode(book)
}

Есть ли какой-нибудь другой способ, которым он напечатал бы полученные json без предварительного знания стойки?

1 Ответ

1 голос
/ 25 апреля 2020

Использование json .Неммаршал функция

import "bytes"

 func createBook(w http.ResponseWriter, r *http.Request) {
    var result map[string]interface{}
     data :+ StreamToByte(r.Body)
    err := json.Unmarshal(data, &result)
    if err !=nil{
        fmt.Println(err) //better to use log 
    }else
        fmt.Println(result)
   }
}
 func StreamToByte(stream io.Reader) []byte {
  buf := new(bytes.Buffer)
    buf.ReadFrom(stream)
    return buf.Bytes()
}

См .: https://appdividend.com/2020/02/28/golang-how-to-convert-json-to-map-in-go/ https://gist.github.com/dixudx/3989284b142414e10352fde9def5c771

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...