تحليل كود Go باستخدام المفاتيح الديناميكية YAML
لتحليل كود Go في ملف YAML الذي يحتوي على مفاتيح ديناميكية، اتبع الخطوات التالية:
1 المكتبة:
go get gopkg.in/yaml.v2
2. حدد هيكل النموذج:
قم بإنشاء هيكل لتمثيله بيانات YAML. إذا كنت تعرف جميع المفاتيح الممكنة، فيمكنك تعريفها باستخدام الحقول العادية، وإلا يمكنك استخدام حقول Map[string]interface{} لتحتوي على مفاتيح ديناميكية.
3. استخدم Unmarshaler مخصص (اختياري):
إذا كنت بحاجة إلى تخصيص كيفية تحليل بيانات YAML، يمكنك استخدام Unmarshaler مخصص. يمكن أن يساعدك هذا في التعامل مع المفاتيح الديناميكية أو سيناريوهات التحليل المعقدة الأخرى.
4. تحليل بيانات YAML:
استخدم وظيفة yaml.Unmarshal لتحليل بيانات YAML وإلغاء تسلسلها في بنية نموذجية.
مثال:
يوضح المثال التالي كيفية تحليل ملف YAML باستخدام مفاتيح ديناميكية:
package main
import (
"fmt"
"gopkg.in/yaml.v2"
)
var data = `
---
development:
skip-header-validation: true
V1:
current: "1.0.0"
mime_types:
- application/vnd.company.jk.identity json;
- application/vnd.company.jk.user json;
- application/vnd.company.jk.role json;
- application/vnd.company.jk.scope json;
- application/vnd.company.jk.test json;
skip-mime-type-validation: true
skip-version-validation: true
V2:
current: "2.0.0"
mime_types:
- application/vnd.company.jk.identity json;
- application/vnd.company.jk.user json;
- application/vnd.company.jk.role json;
- application/vnd.company.jk.scope json;
- application/vnd.company.jk.test json;
`
type MajorVersion struct {
Current string `yaml:"current"`
MimeTypes []string `yaml:"mime_types"`
SkipVersionValidation bool `yaml:"skip-version-validation"`
SkipMimeTypeValidation bool `yaml:"skip-mime-type-validation"`
}
type Environment struct {
SkipHeaderValidation bool
Versions map[string]MajorVersion `yaml:",inline"`
}
func main() {
e := map[string]Environment{}
if err := yaml.Unmarshal([]byte(data), &e); err != nil {
fmt.Println(err.Error())
}
fmt.Printf("%#v\n", e)
}
الإخراج:
map[string]main.Environment{ "development": { SkipHeaderValidation: true, Versions: { "V1": { Current: "1.0.0", MimeTypes: {"application/vnd.company.jk.identity json;", "application/vnd.company.jk.user json;", "application/vnd.company.jk.role json;", "application/vnd.company.jk.scope json;", "application/vnd.company.jk.test json;"}, SkipVersionValidation: true, SkipMimeTypeValidation: true, }, "V2": { Current: "2.0.0", MimeTypes: {"application/vnd.company.jk.identity json;", "application/vnd.company.jk.user json;", "application/vnd.company.jk.role json;", "application/vnd.company.jk.scope json;", "application/vnd.company.jk.test json;"}, SkipVersionValidation: false, SkipMimeTypeValidation: false, }, }, }, }
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3