从GET解析Json数据时出现问题

从GET解析Json数据时出现问题,json,go,Json,Go,我有来自Web服务的数据: [ { "meter_id":"3", "Values":[ { "label":"SMAXSN", "value":"E190912121751 01980" }, { "label":"MSG1", "value":" PAS DE MESSAGE"

我有来自Web服务的数据:

[  
   {  
      "meter_id":"3",
      "Values":[  
         {  
            "label":"SMAXSN",
            "value":"E190912121751 01980"
         },
         {  
            "label":"MSG1",
            "value":" PAS DE MESSAGE"
         },
         {  
            "label":"PCOUP",
            "value":"03"
         },
         {  
            "label":"EASF10",
            "value":"000000000"
         },
         {  
            "label":"STGE",
            "value":"003A0001"
         },
         {  
            "label":"URMS1",
            "value":"235"
         },
         {  
            "label":"EASF06",
            "value":"000000000"
         },
         {  
            "label":"EAST",
            "value":"004191456"
         },
         {  
            "label":"PREF",
            "value":"03"
         },
         {  
            "label":"SMAXSN-1",
            "value":"E190911223945 01940"
         },
         {  
            "label":"DATE",
            "value":"E190912152027"
         },
         {  
            "label":"EASD02",
            "value":"000610281"
         },
         {  
            "label":"PJOURF+1",
            "value":"00008001 NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE"
         },
         {  
            "label":"NJOURF+1",
            "value":"00"
         },
         {  
            "label":"ADSC",
            "value":"021775806277"
         },
         {  
            "label":"EASD03",
            "value":"000045963"
         },
         {  
            "label":"LTARF",
            "value":" BASE"
         },
         {  
            "label":"CCASN-1",
            "value":"E190912143000 00144"
         },
         {  
            "label":"EASF01",
            "value":"004191456"
         },
         {  
            "label":"EASD04",
            "value":"000134889"
         },
         {  
            "label":"EASD01",
            "value":"003400323"
         },
         {  
            "label":"SINSTS",
            "value":"00326"
         },
         {  
            "label":"CCASN",
            "value":"E190912150000 00156"
         },
         {  
            "label":"VTIC",
            "value":"02"
         },
         {  
            "label":"IRMS1",
            "value":"001"
         },
         {  
            "label":"EASF03",
            "value":"000000000"
         },
         {  
            "label":"EASF04",
            "value":"000000000"
         },
         {  
            "label":"EASF08",
            "value":"000000000"
         },
         {  
            "label":"RELAIS",
            "value":"000"
         },
         {  
            "label":"EASF02",
            "value":"000000000"
         },
         {  
            "label":"NJOURF",
            "value":"00"
         },
         {  
            "label":"NTARF",
            "value":"01"
         },
         {  
            "label":"UMOY1",
            "value":"E190912152000 236"
         },
         {  
            "label":"EASF05",
            "value":"000000000"
         },
         {  
            "label":"PRM",
            "value":"23545007228637"
         },
         {  
            "label":"timestamp",
            "value":"2019-09-12T15:20:02+02:00"
         },
         {  
            "label":"EASF09",
            "value":"000000000"
         },
         {  
            "label":"EASF07",
            "value":"000000000"
         },
         {  
            "label":"NGTF",
            "value":" BASE"
         }
      ]
   },
   {  
      "meter_id":"5",
      "Values":[  
         {  
            "label":"VTIC",
            "value":"02"
         },
         {  
            "label":"EASD04",
            "value":"000000000"
         },
         {  
            "label":"EAST",
            "value":"003048661"
         },
         {  
            "label":"NTARF",
            "value":"01"
         },
         {  
            "label":"CCASN-1",
            "value":"E190912143000 00060"
         },
         {  
            "label":"EASF05",
            "value":"000000000"
         },
         {  
            "label":"EASF10",
            "value":"000000000"
         },
         {  
            "label":"IRMS1",
            "value":"000"
         },
         {  
            "label":"EASD03",
            "value":"000000000"
         },
         {  
            "label":"ADSC",
            "value":"021775056027"
         },
         {  
            "label":"CCASN",
            "value":"E190912150000 00058"
         },
         {  
            "label":"URMS1",
            "value":"241"
         },
         {  
            "label":"EASF07",
            "value":"000000000"
         },
         {  
            "label":"DATE",
            "value":"E190912152021"
         },
         {  
            "label":"MSG1",
            "value":" PAS DE MESSAGE"
         },
         {  
            "label":"PJOURF+1",
            "value":"00008001 NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE"
         },
         {  
            "label":"PRM",
            "value":"23544717793089"
         },
         {  
            "label":"LTARF",
            "value":" BASE"
         },
         {  
            "label":"EASF06",
            "value":"000000000"
         },
         {  
            "label":"NJOURF",
            "value":"00"
         },
         {  
            "label":"EASF04",
            "value":"000000000"
         },
         {  
            "label":"EASD02",
            "value":"000329795"
         },
         {  
            "label":"timestamp",
            "value":"2019-09-12T15:20:09+02:00"
         },
         {  
            "label":"EASF08",
            "value":"000000000"
         },
         {  
            "label":"EASF09",
            "value":"000000000"
         },
         {  
            "label":"SMAXSN-1",
            "value":"E190911071004 01100"
         },
         {  
            "label":"NGTF",
            "value":" BASE"
         },
         {  
            "label":"SMAXSN",
            "value":"E190912071628 01110"
         },
         {  
            "label":"PREF",
            "value":"06"
         },
         {  
            "label":"NJOURF+1",
            "value":"00"
         },
         {  
            "label":"EASD01",
            "value":"002718866"
         },
         {  
            "label":"EASF03",
            "value":"000000000"
         },
         {  
            "label":"STGE",
            "value":"003A4001"
         },
         {  
            "label":"RELAIS",
            "value":"000"
         },
         {  
            "label":"EASF02",
            "value":"000000000"
         },
         {  
            "label":"SINSTS",
            "value":"00076"
         },
         {  
            "label":"UMOY1",
            "value":"E190912152000 240"
         },
         {  
            "label":"PCOUP",
            "value":"06"
         },
         {  
            "label":"EASF01",
            "value":"003048661"
         }
      ]
   }
]
当解析时,我应该得到一个包含两个项目的
米的数组

以下是我的结构:

type Meter struct {
    MeterID string `json:"meter_id"`
    Values  []Line `json:"Values"`
}

type Line struct {
    Label string `json:"label"`
    Value string `json:"value"`
}
当我显示原始JSON时:

var data []map[string]interface{}
body, err := ioutil.ReadAll(res.Body)
err = json.Unmarshal(body, &data)
logger.SLog.Debug(data)
我可以看到我看到几个
仪表
项目

但当我尝试用以下方法解析它时:

var meters []Meter
err = json.NewDecoder(res.Body).Decode(&meters)
我还尝试使用以下方法解析数据:

body, err := ioutil.ReadAll(res.Body)
err = json.Unmarshal(body, &meters)
if err != nil {
    logger.SLog.Debug(err)
}
logger.SLog.Debug(meters)
但同样的结果,我在
米中只得到了1个项目


为什么?有点奇怪。我在围棋场上试过这个代码,它还可以,返回2个项目,看:

package main

import (
    "encoding/json"
    "strings"
    "fmt"
)

type Meter struct {
    MeterID string `json:"meter_id"`
    Values  []Line `json:"Values"`
}

type Line struct {
    Label string `json:"label"`
    Value string `json:"value"`
}


func main() {
    jsonData := `[{"meter_id":"3","Values":[{"label":"SMAXSN","value":"E190912121751 01980"},{"label":"MSG1","value":" PAS DE MESSAGE"},{"label":"PCOUP","value":"03"},{"label":"EASF10","value":"000000000"},{"label":"STGE","value":"003A0001"},{"label":"URMS1","value":"235"},{"label":"EASF06","value":"000000000"},{"label":"EAST","value":"004191456"},{"label":"PREF","value":"03"},{"label":"SMAXSN-1","value":"E190911223945 01940"},{"label":"DATE","value":"E190912152027"},{"label":"EASD02","value":"000610281"},{"label":"PJOURF+1","value":"00008001 NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE"},{"label":"NJOURF+1","value":"00"},{"label":"ADSC","value":"021775806277"},{"label":"EASD03","value":"000045963"},{"label":"LTARF","value":" BASE"},{"label":"CCASN-1","value":"E190912143000 00144"},{"label":"EASF01","value":"004191456"},{"label":"EASD04","value":"000134889"},{"label":"EASD01","value":"003400323"},{"label":"SINSTS","value":"00326"},{"label":"CCASN","value":"E190912150000 00156"},{"label":"VTIC","value":"02"},{"label":"IRMS1","value":"001"},{"label":"EASF03","value":"000000000"},{"label":"EASF04","value":"000000000"},{"label":"EASF08","value":"000000000"},{"label":"RELAIS","value":"000"},{"label":"EASF02","value":"000000000"},{"label":"NJOURF","value":"00"},{"label":"NTARF","value":"01"},{"label":"UMOY1","value":"E190912152000 236"},{"label":"EASF05","value":"000000000"},{"label":"PRM","value":"23545007228637"},{"label":"timestamp","value":"2019-09-12T15:20:02+02:00"},{"label":"EASF09","value":"000000000"},{"label":"EASF07","value":"000000000"},{"label":"NGTF","value":" BASE"}]},{"meter_id":"5","Values":[{"label":"VTIC","value":"02"},{"label":"EASD04","value":"000000000"},{"label":"EAST","value":"003048661"},{"label":"NTARF","value":"01"},{"label":"CCASN-1","value":"E190912143000 00060"},{"label":"EASF05","value":"000000000"},{"label":"EASF10","value":"000000000"},{"label":"IRMS1","value":"000"},{"label":"EASD03","value":"000000000"},{"label":"ADSC","value":"021775056027"},{"label":"CCASN","value":"E190912150000 00058"},{"label":"URMS1","value":"241"},{"label":"EASF07","value":"000000000"},{"label":"DATE","value":"E190912152021"},{"label":"MSG1","value":" PAS DE MESSAGE"},{"label":"PJOURF+1","value":"00008001 NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE"},{"label":"PRM","value":"23544717793089"},{"label":"LTARF","value":" BASE"},{"label":"EASF06","value":"000000000"},{"label":"NJOURF","value":"00"},{"label":"EASF04","value":"000000000"},{"label":"EASD02","value":"000329795"},{"label":"timestamp","value":"2019-09-12T15:20:09+02:00"},{"label":"EASF08","value":"000000000"},{"label":"EASF09","value":"000000000"},{"label":"SMAXSN-1","value":"E190911071004 01100"},{"label":"NGTF","value":" BASE"},{"label":"SMAXSN","value":"E190912071628 01110"},{"label":"PREF","value":"06"},{"label":"NJOURF+1","value":"00"},{"label":"EASD01","value":"002718866"},{"label":"EASF03","value":"000000000"},{"label":"STGE","value":"003A4001"},{"label":"RELAIS","value":"000"},{"label":"EASF02","value":"000000000"},{"label":"SINSTS","value":"00076"},{"label":"UMOY1","value":"E190912152000 240"},{"label":"PCOUP","value":"06"},{"label":"EASF01","value":"003048661"}]}]`
    //fmt.Printf("json: %s", jsonData)

    var meters []Meter
    err := json.NewDecoder(strings.NewReader(jsonData)).Decode(&meters)
    if err != nil {
        fmt.Printf("error: %v", err)
            return
    }

    jsonOut, err := json.Marshal(meters)
        if err != nil {
            fmt.Println(err)
            return
        }
    fmt.Printf("obj len: %d\n", len(meters))
    fmt.Printf("jsonOut: %s\n", jsonOut)
}
产出:

obj len: 2
jsonOut: [{"meter_id":"3","Values":[{"label":"SMAXSN","value":"E190912121751 01980"},{"label":"MSG1","value":" PAS DE MESSAGE"},{"label":"PCOUP","value":"03"},{"label":"EASF10","value":"000000000"},{"label":"STGE","value":"003A0001"},{"label":"URMS1","value":"235"},{"label":"EASF06","value":"000000000"},{"label":"EAST","value":"004191456"},{"label":"PREF","value":"03"},{"label":"SMAXSN-1","value":"E190911223945 01940"},{"label":"DATE","value":"E190912152027"},{"label":"EASD02","value":"000610281"},{"label":"PJOURF+1","value":"00008001 NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE"},{"label":"NJOURF+1","value":"00"},{"label":"ADSC","value":"021775806277"},{"label":"EASD03","value":"000045963"},{"label":"LTARF","value":" BASE"},{"label":"CCASN-1","value":"E190912143000 00144"},{"label":"EASF01","value":"004191456"},{"label":"EASD04","value":"000134889"},{"label":"EASD01","value":"003400323"},{"label":"SINSTS","value":"00326"},{"label":"CCASN","value":"E190912150000 00156"},{"label":"VTIC","value":"02"},{"label":"IRMS1","value":"001"},{"label":"EASF03","value":"000000000"},{"label":"EASF04","value":"000000000"},{"label":"EASF08","value":"000000000"},{"label":"RELAIS","value":"000"},{"label":"EASF02","value":"000000000"},{"label":"NJOURF","value":"00"},{"label":"NTARF","value":"01"},{"label":"UMOY1","value":"E190912152000 236"},{"label":"EASF05","value":"000000000"},{"label":"PRM","value":"23545007228637"},{"label":"timestamp","value":"2019-09-12T15:20:02+02:00"},{"label":"EASF09","value":"000000000"},{"label":"EASF07","value":"000000000"},{"label":"NGTF","value":" BASE"}]},{"meter_id":"5","Values":[{"label":"VTIC","value":"02"},{"label":"EASD04","value":"000000000"},{"label":"EAST","value":"003048661"},{"label":"NTARF","value":"01"},{"label":"CCASN-1","value":"E190912143000 00060"},{"label":"EASF05","value":"000000000"},{"label":"EASF10","value":"000000000"},{"label":"IRMS1","value":"000"},{"label":"EASD03","value":"000000000"},{"label":"ADSC","value":"021775056027"},{"label":"CCASN","value":"E190912150000 00058"},{"label":"URMS1","value":"241"},{"label":"EASF07","value":"000000000"},{"label":"DATE","value":"E190912152021"},{"label":"MSG1","value":" PAS DE MESSAGE"},{"label":"PJOURF+1","value":"00008001 NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE"},{"label":"PRM","value":"23544717793089"},{"label":"LTARF","value":" BASE"},{"label":"EASF06","value":"000000000"},{"label":"NJOURF","value":"00"},{"label":"EASF04","value":"000000000"},{"label":"EASD02","value":"000329795"},{"label":"timestamp","value":"2019-09-12T15:20:09+02:00"},{"label":"EASF08","value":"000000000"},{"label":"EASF09","value":"000000000"},{"label":"SMAXSN-1","value":"E190911071004 01100"},{"label":"NGTF","value":" BASE"},{"label":"SMAXSN","value":"E190912071628 01110"},{"label":"PREF","value":"06"},{"label":"NJOURF+1","value":"00"},{"label":"EASD01","value":"002718866"},{"label":"EASF03","value":"000000000"},{"label":"STGE","value":"003A4001"},{"label":"RELAIS","value":"000"},{"label":"EASF02","value":"000000000"},{"label":"SINSTS","value":"00076"},{"label":"UMOY1","value":"E190912152000 240"},{"label":"PCOUP","value":"06"},{"label":"EASF01","value":"003048661"}]}]

测试链接:

你从
err
中得到了什么吗?我刚刚检查了它,err为nil,我还试图用
meters:=make([]Meter,20)
替换
var meters[/code>work@JuliatzindelToro您必须向我们展示可用于重现错误的代码,否则我们就没法知道bug在哪里了。您提供的代码运行良好。更新了我的问题,
Decode
json.Unmarshal
给出了相同的结果,只有一项。但是当我用
[]映射[string]接口{}
打印它时,我得到了所有的项目。我可以假设这不是一个解析问题,但可能链接到HTTP GET.yep,所以问题仍然存在,但我将其发布给您进行分析,因为我无法重现错误。您可以逐个尝试,直到找到代码的错误,调试也会有所帮助。len(meters)只返回1?json输入与调试时的2项匹配?是的,问题似乎不在解析中,而是在GET请求中。。。我理解当你不能重现错误时很难帮助你