【问题标题】:Parsing a JSON array of JSON objects?解析 JSON 对象的 JSON 数组?
【发布时间】:2015-06-02 06:33:03
【问题描述】:

我正在尝试从 JSON 数组中获取每个 JSON 对象。我通过 HTTP 帖子获取这些数据。

我知道我的数据会是什么样子:

   {
    "array":[
       {
          "entity_title":"University of Phoenix", 
          "entity_org_name":"CS Club",
          "possible_user_name":"Johnny Ive",
          "posibble_user_email":"Johhny.Ive@uop.edu",
          "user_position_title":"President",
          "msg_body_id":4
       },
      {
          "entity_title":"University of San Francisco", 
          "entity_org_name":"Marketing club",
          "possible_user_name":"steve jobs",
          "posibble_user_email":"steven.job@uop.edu",
          "user_position_title":"Student",
          "msg_body_id":5
      }
    ]
  }

我的示例代码和结构如下所示:

    type MsgCreateUserArray struct {
         CreateUser []MsgCreateUserJson `json:"createUserArray"`
    }
    type MsgCreateUserJson struct {
        EntityTitleName string  `json:"entity_title_name"`
        EntityOrgName   string  `json:"entity_org_name"`
        PossibleUserName string `json:"possible_user_name"`
        PossibleUserEmail   string  `json:"possible_user_email"`
        UserPositionTitle   string  `json:"user_position_title"`
        MsgBodyId       string  `json:"msg_body_id, omitempty"` 
    }


func parseJson(rw http.ResponseWriter, request *http.Request) {
    decodeJson := json.NewDecoder(request.Body)

    var msg MsgCreateUserArray
    err := decodeJson.Decode(&msg)

    if err != nil {
        panic(err)
    }
    log.Println(msg.CreateUser)
}

func main() {
    http.HandleFunc("/", parseJson)
    http.ListenAndServe(":1337", nil)
}

我不确定如何迭代 JSON 数组并获取 JSON 对象,然后只使用 JSON 对象。

【问题讨论】:

  • 你有什么错误吗?可以发一下吗?
  • 不,我得到的响应是这样的:2015/03/29 01:01:14 [{University of Phoenix CS Club Johnny Ive Johhny.Ive@uop.edu President } {University of San Francisco Marketing club steve jobs steven.job@uop.edu Student }]
  • 字段名称不匹配(例如,您有 json:"entity_title_name" 但您的 json 有“entitiy_title”,createUserArrayarray);某些字段的类型错误(例如,您的 MsgBodyId string 但 JSON 有一个数字;结构标签不应包含空格(例如,从 json:"msg_body_id, omitempty" 中删除空格)......等等......

标签: arrays json go


【解决方案1】:

试试这个作为你的结构,

type MsgCreateUserArray struct {
    CreateUser []MsgCreateUserJson `json:"array"`
}

type MsgCreateUserJson struct {
    EntityOrgName     string  `json:"entity_org_name"`
    EntityTitle       string  `json:"entity_title"`
    MsgBodyID         int64   `json:"msg_body_id,omitempty"`
    PosibbleUserEmail string  `json:"posibble_user_email"`
    PossibleUserName  string  `json:"possible_user_name"`
    UserPositionTitle string  `json:"user_position_title"`
}

您的entity_title_name 命名不正确,顶级array 也不正确。解码为MsgCreateUserArray 后,您可以遍历CreateUser 切片以获取每个MsgCreateUserJson

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多