質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.04%

  • Go

    418questions

    Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

golangでブラウザでjson形式で作られたデータを見られるようにjsonデータを作成する方法を教えてください。

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 244

UekiKouji

score 100

いつもお世話になります。json形式のデータをブラウザで確認できるような形式で作成する方法を教えてください。例えば、http://localhost:8080/jsonでアクセスするとid:100のように表示されるようにしたいです。os.Createの際、urlをどのように指定すればよろしいのでしょうか。ご教授をお願いします。

package main

import (
        "encoding/json"
        "fmt"
        "io"
        "os"
)

type Post struct {
        Id       int       `json:"id"`
        Content  string    `json:"content"`
        Author   Author    `json:"author"`
        Comments []Comment `json:"comments"`
}

type Author struct {
        Id   int    `json:"id"`
        Name string `json:"name"`
}

type Comment struct {
        Id      int    `json:"id"`
        Content string `json:"content"`
        Author  string `json:"author"`
}

func main() {

  post := Post{
    Id:      1,
    Content: "Hello World!",
    Author: Author{
      Id:   2,
      Name: "Sau Sheong",
    },
    Comments: []Comment{
      Comment{
        Id:      3,
        Content: "Have a great day!",
        Author:  "Adam",
      },
      Comment{
        Id:      4,
        Content: "How are you today?",
        Author:  "Betty",
      },
    },
  }


        jsonFile, err := os.Create("post.json")
        if err != nil {
                fmt.Println("Error creating JSON file:", err)
                return
        }
        jsonWriter := io.Writer(jsonFile)
        encoder := json.NewEncoder(jsonWriter)
        err = encoder.Encode(&post)
        if err != nil {
                fmt.Println("Error encoding JSON to file:", err)
                return
        }
}
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

0

以下のようにして見ました。

package main

import (
    "fmt"
    "net/http"
    "log"
    "encoding/json"
    "github.com/gorilla/mux"
)

// 単純な構造体
type Data1 struct {
    Title    string `json:"title"`
    Message  string `json:"message"`
    Status   int    `json:"status"`
}

func main(){

    // ルーティング
    router := mux.NewRouter()

    // URL別設定
    router.HandleFunc("/sample1", func(w http.ResponseWriter, r  *http.Request){

        // 構造体を定義
        var data1 = Data1{}
        data1.Title = "sample1"
        data1.Message = "hello, sample1"
        data1.Status = 100

        // jsonエンコード
        outputJson, err := json.Marshal(&data1)
        if err != nil {
            panic(err)
        }

        // jsonヘッダーを出力
        w.Header().Set("Content-Type", "application/json")

        // jsonデータを出力
        fmt.Fprint(w, string(outputJson))

        // log
        log.Print(r.URL.Path)
    })

    // ハンドル割当
    http.Handle("/", router)

    // log
    log.Print("localhost:9000")

    // ポート
    http.ListenAndServe(":9000", nil)

}

イメージ説明

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 91.04%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Go

    418questions

    Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

  • トップ
  • Goに関する質問
  • golangでブラウザでjson形式で作られたデータを見られるようにjsonデータを作成する方法を教えてください。