在Golang中解析JSON以绘制多边形

时间:2017-10-23 02:53:35

标签: json parsing go

我在Go中解析一个大型JSON文件,我只需要从JSON中获取特定项目。

它通常是一个非常大的文件,但最终,它变成了这个:

"textAnnotations": [
    {
        "boundingPoly": {
            "vertices": [
                {
                    "x": 136,
                    "y": 119
                },
                {
                    "x": 5606,
                    "y": 119
                },
                {
                    "x": 5606,
                    "y": 3985
                },
                {
                    "x": 136,
                    "y": 3985
                }
            ]
        },
        "description": "Description",
        "locale": "en"
    },
    {
        "boundingPoly": {
            "vertices": [
                {
                    "x": 3420,
                    "y": 122
                },
                {
                    "x": 3439,
                    "y": 122
                },
                {
                    "x": 3439,
                    "y": 144
                },
                {
                    "x": 3420,
                    "y": 144
                }
            ]
        },
        "description": "10"
    },
    {
        "boundingPoly": {
            "vertices": [
                {
                    "x": 4106,
                    "y": 119
                },
                {
                    "x": 4128,
                    "y": 119
                },
                {
                    "x": 4128,
                    "y": 141
                },
                {
                    "x": 4106,
                    "y": 141
                }
            ]
        },
        "description": "12"
    },

我需要在“textAnnotations”中获取所有“boundingPoly”的顶点和描述。我已经看了几个JSON解析库,但似乎没有一个完全符合我的要求。

2 个答案:

答案 0 :(得分:1)

你只需要正确布局你的结构。

这样的事情:

type YourType struct {
    TextAnnotations []struct {
        BoundingPoly struct {
            Vertices []struct {
                X int `json:"x"`
                Y int `json:"y"`
            } `json:"vertices"`
        } `json:"boundingPoly"`
        Description string `json:"description"`
        Locale      string `json:"locale,omitempty"`
    } `json:"textAnnotations"`
}

剩下的就是直截了当:https://play.golang.org/p/ICtREyQyjF

答案 1 :(得分:0)

您可以使用此工具从JSON示例自动生成Go结构:https://mholt.github.io/json-to-go/

每次我需要为复杂的JSON对象创建结构时,我都在使用它。