sách gpt4 ai đã đi

json - Phân tích cú pháp JSON từ giá trị chuỗi JSON

In lại Tác giả: IT Prince Thời gian cập nhật: 2023-10-29 02:32:10 26 4
mua khóa gpt4 Nike

Tôi muốn chuyển đổi từ chuỗi sang đối tượng.

Từ

{"key1": "{\n \"key2\": \"value2\",\n \"key3\": {\n \"key4\": \"value4\"\n }\n}\n"}

Đưa cho

{"key1": {"key2": "giá trị2", "key3": {"key4": "giá trị4"}}}

Cuối cùng, tôi muốngiá trị4.

Tôi có thể lấy giá trị của "key1" bằng cách sử dụng tập lệnh bên dưới.

jsondata := `{"key1": "{\n \"key2\": \"value2\",\n \"key3\": {\n \"key4\": \"value4\"\n }\n}\n"}`
var m map[string]giao diện{}
json.Unmarshal([]byte(jsondata), &m)
giá trị := m["key1"]
fmt.Println(giá trị)

https://play.golang.org/p/4lwgQJfp5S

Nhưng tôi không thể chuyển đổi giá trị thành một đối tượng. Vậy nên tôi không thể lấy được "giá trị 4". Có phương pháp nào cho việc này không? Tôi có thể lấy nó thông qua biểu thức chính quy https://play.golang.org/p/6TB-qNAdgQNhưng đây không phải là giải pháp của tôi hiện tại.

Cảm ơn bạn rất nhiều vì đã dành thời gian và đóng góp ý kiến. Tôi xin lỗi vì câu hỏi thiếu chín chắn của mình.

1 Câu trả lời

Có hai cấp độ mã hóa JSON. Bước đầu tiên là giải mã giá trị JSON bên ngoài. Giải mã thành cấu trúc phù hợp với cấu trúc JSON.

var outer struct{Key1 chuỗi }
nếu err := json.Unmarshal([]byte(jsondata), &outer); err != nil {
log.Fatal(err)
}

Bước tiếp theo là giải mã giá trị JSON bên trong. Một lần nữa, giải mã thành cấu trúc phù hợp với cấu trúc JSON.

var inner struct{ Key3 struct{ Key4 chuỗi } }
nếu err := json.Unmarshal([]byte(outer.Key1), &inner); err != nil {
log.Fatal(err)
}
// Giá trị là inner.Key3.Key4

ví dụ về sân chơi

Nếu JSON không được mã hóa kép, bạn có thể giải mã nó cùng một lúc:

jsondata := `{"key1": { "key2": "giá trị2", "key3": { "key4": "giá trị4" }}}`
var v cấu trúc {
Key1 struct{ Key3 struct{ Key4 chuỗi } }
}
nếu err := json.Unmarshal([]byte(jsondata), &v); err != nil {
log.Fatal(err)
}
// giá trị là v.Key1.Key3.Key4

ví dụ về sân chơi

Về json - Phân tích cú pháp JSON từ giá trị chuỗi JSON, 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/47046475/

26 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