यह निम्न कोड सफलतापूर्वक काम कर रहा है, यह मेरी जेसन फ़ाइल को एक सीएसवी फ़ाइल में परिवर्तित करता है। लेकिन मैं अपने प्रत्येक कॉलम में सीएसवी फ़ाइल में शीर्षक जोड़ना चाहता हूं। दुर्भाग्य से, मुझे यह नहीं पता कि यह कैसे करें। अगर किसी के पास कोई विचार है तो यह बहुत मददगार होगा।

सादर

package main

import (
    "encoding/json"
    "encoding/csv"
    "fmt"
    "io/ioutil"
    "os"
    "net/http"
    "strconv"
)

type People struct {
    Name string
    Craft string
}

type General struct {
    People []People
    Number int
    Message string
}

func main() {
    // Reading data from JSON File  
    response, err := http.Get("http://api.open-notify.org/astros.json")
    if err != nil {
        fmt.Printf("The Http request failed with error %s\n", err)
    }

    data,_ := ioutil.ReadAll(response.Body)
    //fmt.Println(string(data))
    // Unmarshal JSON data
    var general General
    json.Unmarshal([]byte(data), &general)
    //fmt.Printf("First person: %s, Message: %s", general.People[0].Name, general.Message)

    // Create a csv file
    csvdatafile, err := os.Create("./astros.csv")
    if err != nil {
        fmt.Println(err)
    }
    defer csvdatafile.Close()
    // Write Unmarshaled json data to CSV file
    w := csv.NewWriter(csvdatafile)
    for _, obj := range general.People {    
        fmt.Println("Are you going into the for ?")
        var record []string
        record = append(record, strconv.Itoa(general.Number), general.Message)
        record = append(record, obj.Name, obj.Craft)
        w.Write(record)
        fmt.Println("Are you coming here")
        record = nil
    }
    w.Flush()
    fmt.Println("Appending succed")

}
0
Camille BOUQUET 1 फरवरी 2020, 01:20

1 उत्तर

सबसे बढ़िया उत्तर

ठीक है अगर आप इसे सिर्फ इस उदाहरण के लिए चाहते हैं, तो क्या आप for स्टेटमेंट से पहले फ़ाइल में कॉलम हेडर लिख सकते हैं, जो है:

w := csv.NewWriter(csvdatafile)
//new code 
var header []string
header = append(header, "Number")
header = append(header, "Message")
header = append(header, "Name")
header = append(header, "Craft")
w.Write(header)

for _, obj := range general.People {   
1
Gern Blanston 1 फरवरी 2020, 01:40