当前位置: 首页 > 知识库问答 >
问题:

无法将json数据反序列化为结构

宗政斌
2023-03-14

我是一个新手,正在尝试编写一个简单的应用程序,从大学校中提取一些学校数据。组织。json数据如下所示:

{
    "schools": {
        "school": [
            {
                "gsId": 1,
                "name": "Catholic School",
                "type": "private",
                "gradeRange": "PK-9",
                "enrollment": 39,
                "parentRating": 4,
                "city": "Denver",
                "state": "CO",
                "address": "111 Main St., \nDenver, CO  80100",
                "phone": "(720) 555-1212",
                "fax": "(720) 555-1212",
                "website": "http://www.myschool.org",
                "ncesId": "1234567",
                "lat": 30.519446,
                "lon": -105.71314,
                "overviewLink": "http://www.greatschools.org/colorado/Denver/1-Catholic-School/?s_cid=gsapi",
                "ratingsLink": "http://www.greatschools.org/school/rating.page?state=CO&id=1&s_cid=gsapi",
                "reviewsLink": "http://www.greatschools.org/school/parentReviews.page?state=CO&id=1&s_cid=gsapi",
                "schoolStatsLink": "http://www.greatschools.org/cgi-bin/CO/otherprivate/1"
            }...

我的结构如下所示:

type SchoolStruct struct {
    GsId            int
    Name            string
    SchoolType      string
    GradeRange      string
    Enrollment      int
    ParentRating    int
    City            string
    State           string
    Address         string
    Phone           string
    Fax             string
    Website         string
    NcesId          string
    Lat             float64
    Lon             float64
    OverviewLink    string
    RatingsLink     string
    ReviewsLink     string
    SchoolStatsLink string
}

type SchoolsStruct struct {
    Schools []SchoolStruct
}

当我运行代码时,我得到“json:无法将对象解组为[]main.SchoolStruct类型的Go值”

我正在使用gopencils库来提出我的请求,并成功地将其用于非常简单的请求。你知道我可能做错了什么吗?

共有1个答案

赫连泰宁
2023-03-14

有几个问题。首先,您试图解码一个学校,但数据是学校,它有一个学校的成员(数组)。

另一个问题是您的名称不匹配<代码>GsId!=gsid除非您通过使用struct标记告诉Go。

请尝试解码到SchoolResponseData:

type SchoolResponseData struct {
    Schools struct {
        School []struct {
            Address         string  `json:"address"`
            City            string  `json:"city"`
            Enrollment      float64 `json:"enrollment"`
            Fax             string  `json:"fax"`
            GradeRange      string  `json:"gradeRange"`
            GsId            float64 `json:"gsId"`
            Lat             float64 `json:"lat"`
            Lon             float64 `json:"lon"`
            Name            string  `json:"name"`
            NcesId          string  `json:"ncesId"`
            OverviewLink    string  `json:"overviewLink"`
            ParentRating    float64 `json:"parentRating"`
            Phone           string  `json:"phone"`
            RatingsLink     string  `json:"ratingsLink"`
            ReviewsLink     string  `json:"reviewsLink"`
            SchoolStatsLink string  `json:"schoolStatsLink"`
            State           string  `json:"state"`
            Type            string  `json:"type"`
            Website         string  `json:"website"`
        } `json:"school"`
    } `json:"schools"`
}
 类似资料:
  • 我在redis实现中使用spring缓存,我有以下方法 当我第一次访问该方法时,数据以json格式缓存到redis中。 但是当我第二次访问它时,它会出现一些错误,如下所示: Java语言util。同时发生的执行例外:组织。springframework。数据redis。序列化程序。SerializationException:无法读取JSON:无法构造org的实例。springframework。

  • 问题内容: 我正在尝试将json数据反序列化为模型类,但是失败了。这是我的工作: 这是我的模型的样子: 您可以看到我到达这里的Json:http : //api.worldbank.org/incomeLevels/LIC/countries? format=json 这是我得到的错误: 无法将JSON数组反序列化为“ Mvc4AsyncSample.Models.CountryModel”类型。

  • 问题内容: 我在反序列化一些json数据,获取InvalidCastExceptions之类的问题。 谁能指出我正确的方向? 这是我要反序列化的json; [{“ OrderId”:0,“名称”:“摘要”,“ MaxLen”:“ 200”},{“ OrderId”:1,“名称”:“详细信息”,“ MaxLen”:“ 0”}] 这是我的代码; 问题答案: OrderId是json中的一个Int(请注

  • 我需要将下面两个foramt反序列化为单个代码中的 嵌套异常是org.springframework.http.converter.httpmessageNotreadableException:JSON解析错误:无法反序列化字符串类型的值“2020-04-23t10:51:24.238+01:00”:com.fasterxml.jackson.databind.exc.invalidformat

  • 问题内容: 这是我的课 最初的一个实际上需要转换为良好的json数据。这是最初的坏人 这是我的json数据,我无法反序列化。即使更改,我仍会收到默认值 我的自定义封面 问题答案: 您可以使用json.net以显示的格式对a进行反序列化和重新序列化,只要您使用custom即可。这是必需的,因为默认情况下,对象集合在JSON数组之间进行序列化,但是在JSON中,对象集合以单个对象的紧凑形式进行序列化,