如何在golang中打印变量for,in outside for,in outside for?

我有问题如何打印一个变量,在外面,在 Go 中?我正在使用库 GJSON gjson

我尝试了很多方法,我只是输入了全局变量但只是出现了最终索引,例如:

datePriodGlobal = DatePeriod.String()

datePriodGlobal = DatePeriod.String()

我尝试的另一种方式也只是最终索引,如下所示:

tempPayments:= "Envelope.Body.GetCustomReportResponse.GetCustomReportResult.ContractSummary.PaymentCalendarList.PaymentCalendar."

resultMapPriodTest := gjson.Get(jsonString,tempPayments + "#.Date")

    resultContractsSubmittedTest := gjson.Get(jsonString, tempPayments + "#.ContractsSubmitted")


    var datePriodGlobal string

    for _, DatePeriod := range  resultMapPriodTest.Array()[1:13] {

        datePriodGlobal = fmt.Sprintf("%s", DatePeriod.String())

    }


    var contractsSubmittedGlobal string

    for _, ContractsSubmitted := range resultContractsSubmittedTest.Array()[1:13]{

        contractsSubmittedGlobal = fmt.Sprintf("%s", ContractsSubmitted.String())

    }

    fmt.Printf("%s |        %s              \t|",datePriodGlobal, contractsSubmittedGlobal)


    }

我有这样的 json:

http://img2.mukewang.com/6458cad70001ff5206040520.jpg

吃鸡游戏
浏览 105回答 2
2回答

炎炎设计

我建议只遍历PaymentCalendarJSON 对象的一部分,而不是使用索引作为伪 ID 来查询每个字段。下面是一个简单的演示:func main() {    jsonString := `{    "PaymentCalendarList": {        "PaymentCalendar": [            {"ContractSubmitted": 10,             "Date": "2018-01-01T01:01:01"},            {"ContractSubmitted": 20,             "Date": "2018-01-01T02:02:02"},            {"ContractSubmitted": 30,             "Date": "2018-01-01T03:03:03"}            {"ContractSubmitted": 40,             "Date": "2018-01-01T04:04:04"}            {"ContractSubmitted": 50,             "Date": "2018-01-01T05:05:05"}        ]    }}`    result := gjson.Get(jsonString, "PaymentCalendarList.PaymentCalendar")    for _, paymentCal := range result.Array()[0:3] {        date := paymentCal.Get("Date")        contractSubmit := paymentCal.Get("ContractSubmitted")        fmt.Printf("%s | %s\n", date, contractSubmit)    }}操场

茅侃侃

“不能将‘DatePeriod’(类型结果)用作赋值中的类型字符串”因此,变量DatePeriod是一种Result类型,而不是String. 您指定要使用 打印字符串%s,但不提供fmt.Sprintf字符串,从而导致该错误。Sprintf如果给定的值已经是 ,则不需要String。查看gjson.go,该Result类型有一个String()方法,所以你想要 instead DatePeriod.String()。编辑:从您的最新编辑来看,我想我看到了您的第二期。您的循环每次都会替换...Global字符串变量,因此您只会获得传递给 的切片中的最后一个值range。由于您的切片长度相同,因此您最好使用以下内容:resultMapPriodTest := gjson.Get(jsonString,tempPayments + "#.Date")resultContractsSubmittedTest := gjson.Get(jsonString, tempPayments + "#.ContractsSubmitted")dateArray := resultMapPriodTest.Array()[1:13]contractsArray := resultContractsSubmittedTest.Array()[1:13]for i := 0; i<len(dateArray); i++ {    d := dateArray[i].String()    c := contractsArray[i].String()    fmt.Printf("%s |        %s              \t|", d, c)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go