为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 GJSON 中循环切片

如何在 GJSON 中循环切片

Go
梦里花落0921 2023-05-08 18:08:24
如何循环范围或正则表达式 #[1 - 12] 以在库 GJSON gjson 库中显示基于 #像这样的例子,我在下面有图片 json :在此处输入图像描述我尝试像下面这样循环tempPayments:="Envelope.Body.GetCustomReportResponse.GetCustomReportResult.ContractSummary.PaymentCalendarList.PaymentCalendar."resultPriod1 := gjson.Get(jsonString,tempPayments + "#.Date")for _, datePriod := range resultPriod1.Array() {    println(datePriod[1].String())}如何在“#”中显示范围 [1-10] 之间的结果?
查看完整描述

1 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

Result.Array()Result将当前结果转换为( )的切片[]Result。因此,您可以只为您想要的范围取一片。例如resultPriod.Array()[0:12]获取前 12 个元素。


以此简化版为例:


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"}

        ]

    }

}`


    tempPayments := "PaymentCalendarList.PaymentCalendar."

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


    # Take the first 3 results

    for _, datePeriod := range resultPeriod.Array()[0:3] {

        fmt.Println(datePeriod)

    }


}

操场


查看完整回答
反对 回复 2023-05-08
  • 1 回答
  • 0 关注
  • 91 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信