"carrier.json"ファイルのデータを取得し、情報を使用してGoを使用してCSVファイルを作成しようとしています。しかし、私は、フォローエラー/通知を受けていますGolangを使用してjsonファイルをcsvファイルに変換する場合
./carrier_json.go:53:48: obj.APIVersion undefined (type Json has no field or method APIVersion)
./carrier_json.go:53:69: obj.CarrierSid undefined (type Json has no field or method CarrierSid)
./carrier_json.go:53:85: obj.AccountSid undefined (type Json has no field or method AccountSid)
./carrierlookup.go:12:6: main redeclared in this block
previous declaration at ./carrier_json.go:31:6
私は数時間オンラインで検索し、何か助けが大いに評価されるでしょう。注:私はあまり技術的ではありません。
「carrier.json」は、以下を持っている、
{
"Message360": {
"ResponseStatus": 1,
"Carrier": {
"ApiVersion": "3",
"CarrierSid": "c7e57a2a-92d7-0430",
"AccountSid": "2f4ce81a-f08d-04e1",
"PhoneNumber": "+19499999999",
"Network": "Cellco Partnership dba Verizon Wireless - CA",
"Wireless": "true",
"ZipCode": "92604",
"City": "Irvine",
"Price": "0.0003",
"Status": "success",
"DateCreated": "2017-10-13 18:44:32"
}
}
}
私は、以下の情報を持っているcarrier_json.goと呼ばれる、外出先ファイルを持っています。
package main
import (
"encoding/csv"
"encoding/json"
"fmt"
"io/ioutil"
"os"
"strconv"
)
type Json struct {
Message360 struct {
ResponseStatus int `json:"ResponseStatus"`
Carrier struct {
APIVersion string `json:"ApiVersion"`
CarrierSid string `json:"CarrierSid"`
AccountSid string `json:"AccountSid"`
PhoneNumber string `json:"PhoneNumber"`
Network string `json:"Network"`
Wireless string `json:"Wireless"`
ZipCode string `json:"ZipCode"`
City string `json:"City"`
Price string `json:"Price"`
Status string `json:"Status"`
DateCreated string `json:"DateCreated"`
} `json:"Carrier"`
} `json:"Message360"`
}
func main() {
// reading data from JSON File
data, err := ioutil.ReadFile("carrier.json")
if err != nil {
fmt.Println(err)
}
// Unmarshal JSON data
var d []Json
err = json.Unmarshal([]byte(data), &d)
if err != nil {
fmt.Println(err)
}
// Create a csv file
f, err := os.Create("./carrier.csv")
if err != nil {
fmt.Println(err)
}
defer f.Close()
// Write Unmarshaled json data to CSV file
w := csv.NewWriter(f)
for _, obj := range d {
var record []string
record = append(record, strconv.FormatInt(obj.APIVersion, 10), obj.CarrierSid, obj.AccountSid)
w.Write(record)
record = nil
}
w.Flush()
}
エラーメッセージは非常に明確です。 'Json'型は' Message360'という名前のフィールドしか持っていません。例えばアクセスする。 'APIVersion'は' jsonObj.Message360.APIVersio'nにアクセスしなければなりません( 'jsonObj'は' JSON'型です)。 – PieOhPah