Python как обработка JSON с использованием Golang - PullRequest
0 голосов
/ 12 февраля 2019

Используя Python, я могу сделать следующее:

r = requests.get(url_base + url)
jsonObj = json.loads(r.content.decode('raw_unicode_escape'))
print(jsonObj["PartDetails"]["ManufacturerPartNumber"]

Есть ли способ выполнить то же самое, используя Golang?В настоящее время мне нужно следующее:

json.Unmarshal(body, &part_number_json)
fmt.Println("\r\nPartDetails: ", part_number_json.(map[string]interface{})["PartDetails"].(map[string]interface{})["ManufacturerPartNumber"])

То есть мне нужно использовать приведение для каждого поля JSON, что утомляет и делает код нечитаемым.Я попробовал это, используя отражение , но это также не совместимо.

РЕДАКТИРОВАТЬ : в настоящее время использовать следующую функцию:

func jso(json interface{}, fields ...string) interface{} {
    res := json
    for _, v := range fields {
        res = res.(map[string]interface{})[v]
    }
    return res

и вызывать ее какчто:

fmt.Println("PartDetails: ", jso( part_number_json, "PartDetails", "ManufacturerPartNumber") )

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Я нашел следующий ресурс очень полезным при создании структуры из json.Unmarshaling должен соответствовать только тем полям, которые вы определили в структуре, поэтому возьмите то, что вам нужно, и оставьте остальные, если хотите.

https://mholt.github.io/json-to-go/

0 голосов
/ 12 февраля 2019

Существуют сторонние пакеты, такие как gjson , которые могут помочь вам в этом.

При этом обратите внимание, что Go - это Go, а Python - это Python.Go статически типизирован, к лучшему и худшемуДля написания простых манипуляций с JSON требуется больше кода, но этот код будет легче поддерживать позднее, поскольку он более строго типизирован, а компилятор помогает вам проверять ошибки.Типы также служат документацией - простое вложение слов и массивов совершенно произвольно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...