sách gpt4 ai đã đi

json - cố gắng phân tích cú pháp JSON và tạo JSON đã trích xuất

In lại Tác giả: Data Little Sun Thời gian cập nhật: 2023-10-29 03:40:19 29 4
mua khóa gpt4 Nike

Tôi đang cố gắng tạo động một đối tượng JSON dựa trên dữ liệu nhận được từ API.

Dữ liệu mẫu đã nhận: Giải mã dữ liệu thành cấu trúc CiItems được đưa ra bên dưới

{
"class_name": "kiểm tra",
"configuration_items": [
{
"id": "ea09a24f-01ef-42ad-ab19-e0369341d9b3",
"ci_name": "makk",
"bình luận": null,
"created_by": "mike",
"cập nhật bởi": "sam",
"đã tạo": "2019-08-02T21:16:35.656Z",
"cập nhật": "2019-08-02T21:21:08.073Z",
"ci_state_id": "ngẫu nhiên",
"super_ci_id": rỗng,
"ci_attributes": [
{
"thuộc tính_id": "c995c693-b97c-4863-a61b-81a5d904c967",
"df_attribute_value": "xsmall",
"tên_thuộc_tính": "tên_thuộc_tính",
"data_type": "chuỗi"
},
{
"thuộc tính_id": "58845f48-7d2a-4c8c-8591-eaf59a23d84d",
"df_attribute_value": "vmware",
"attribute_name": "nhà cung cấp",
"data_type": "chuỗi"

}
]}]}

Sau đây là cấu trúc đã tạo:

 Kiểu Thuộc tính struct {
Chuỗi AttributeID `json:"attribute_id "`
Chuỗi DfAttributeValue `json:"df_attribute_value"`
Chuỗi AttName `json:"attribute_name"`
Kiểu dữ liệu chuỗi `json:"data_type"`
}

// Thuộc tính - mảng Thuộc tính
loại Thuộc tính []Thuộc tính

// CiItem - mục cấu hình của VM
kiểu CiItem struct {
Chuỗi ID `json:"ci_id"`
Đã tạo chuỗi `json:"created"`
Đã cập nhật chuỗi `json:"updated"`
Chuỗi CreatedBY `json:"created_by"`
Chuỗi được cập nhật BY `json:"updated_by"`
Thuộc tính Atts `json:"ci_attributes"`
}

// CiItems - mảng CiItem
kiểu CiItems struct {
Chuỗi ClassName `json:"class_name"`
Mục []CiItem `json:"configuration_items"`
}

Mã để giải mã dữ liệu và tạo ra Json được trích xuất:

func (client *Client) GetList() (CiItems, lỗi) {
var ra CiItems
lỗi := client.doJsonRequest("GET", &out)
log.Thông tin(ra)
nếu err != nil {
trả lại, err
}
var đầu ra bản đồ[chuỗi]giao diện{}
//parseMap(out.Items[0].(bản đồ[chuỗi]giao diện{}))
trích xuấtBase(out.Items[0], &đầu ra)
trả về, nil
}


func extractBase(ci interface{}, output interface{}) {
trường := phản ánh.TypeOf(ci)
giá trị ​​:= phản ánh.ValueOf(ci)
num := các trường.NumField()

đối với i := 0; i < số; i++ {
trường := các trường.Trường(i)
giá trị := giá trị.Trường(i)

nếu chuỗi(field.Name) != "Atts" {
tên := chuỗi(trường.Tên)
đầu ra[tên] = chuỗi(giá trị)
}
}
}

Tôi đang cố gắng tạo một JSON với các khóa id, ci_name, created_by, updated_by, attribute_name như thế này

{
"ci_name": "makk",
"created_by": "mike",
"cập nhật bởi": "sam",
"đã tạo": "2019-08-02T21:16:35.656Z",
"cập nhật": "2019-08-02T21:21:08.073Z",
"tname": "xsmall",
"nhà cung cấp": "vmware"
}

Tôi đã thử sử dụng reflect, v.v.

1 Câu trả lời

sử dụng Mục CiItem Tạo bản đồ các giá trị trong trường và trả về từ hàm.

func extractBase(ci *CiItem) map[string]interface{} {
kết quả := map[string]interface{}{
"ci_name": ci.Tên,
"created_by": ci.CreatedBY,
"cập nhật bởi": ci.UpdatedBY,
"đã tạo": ci.Đã tạo,
"đã cập nhật": ci.Đã cập nhật,
}
đối với _, a := phạm vi ci.Atts {
kết quả[a.AttName] = a.DfAttributeValue
}
trả về kết quả
}

Liên quan đến json - cố gắng phân tích cú pháp JSON và tạo JSON đã trích xuất, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/57532143/

29 4 0
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com