Örnek JSON şeması doğru mu?

591473

Decapat
Katılım
14 Ekim 2022
Mesajlar
709
Çözümler
2
JSON:
{
   "okul":"İstanbul Teknik Üniversitesi",


   "bilgisayar_muhendisliği_bolumu":[
    "Eğitim"
    ,[
     "Lisans Programları",{
        "Bilgisayar Mühendisliği":[
            "Sayısal Dersler",
            {
                "dersBir":"Fizik",
                "dersİki":"Matematik",
                "dersUc":"Ayrık Matematik",
                "dersDort":"Veri Yapıları",
                "dersBes":"Mikrobilgisayar",
                "dersAlti":"Software Engineering",
                "dersYedi":"Veri Tabanı Sistemleri"
            },
            "Sözel Dersler",
            {
                "dersBir":"Türk Dili",
                "dersİki":"Atatürk Ve İnkılap Tarihi",
                "dersUc":"İngilizce",
                "dersDort":"Temel Almanca",
                "dersBes":"Tarih"
            },
            "Seçmeli Dersler",
            {
              "dersBir":"Seçmeli İleri Seviye Matematik",
              "dersİki":"Seçmeli Temel Dini Bilgiler",
              "dersUc":"Seçmeli Temel Fransızca",
              "dersDort":"Seçmeli İleri Seviye Donanım Sistemleri"
            }
           
        ],

        "Bilişim Sistemleri Mühendisliği (SUNY)":
        [
            "Sayısal Dersler",
            {
                "dersBir":"Calculus",
                "dersİki":"Fizik",
                "dersUc":"Programlama",
                "dersDort":"Operating Systems",
                "dersBes":"Database Systems"
            },
           
            "Sözel Dersler",
            {
                "dersBir":"Türk Dili",
                "dersİki":"Atatürk Ve İnkılap Tarihi",
                "dersUc":"İngilizce",
                "dersDort":"Temel Almanca",
                "dersBes":"Tarih"
            },

            "Seçmeli Dersler",
            {
              "dersBir":"Seçmeli İleri Seviye Matematik",
              "dersİki":"Seçmeli Temel Dini Bilgiler",
              "dersUc":"Seçmeli Temel Fransızca",
              "dersDort":"Seçmeli İleri Seviye Donanım Sistemleri"
            }
        ]

        },

       "Lisansüstü Programlar",{
        "Bilgisayar Mühendisliği Lisansüstü":
        [
            "Sayısal Dersler",
            {
                "dersBir":"Calculus",
                "dersİki":"Fizik",
                "dersUc":"Programlama",
                "dersDort":"Operating Systems",
                "dersBes":"Database Systems"
            },
           
            "Sözel Dersler",
            {
                "dersBir":"Türk Dili",
                "dersİki":"Atatürk Ve İnkılap Tarihi",
                "dersUc":"İngilizce",
                "dersDort":"Temel Almanca",
                "dersBes":"Tarih"
            },

            "Seçmeli Dersler",
            {
              "dersBir":"Seçmeli İleri Seviye Matematik",
              "dersİki":"Seçmeli Temel Dini Bilgiler",
              "dersUc":"Seçmeli Temel Fransızca",
              "dersDort":"Seçmeli İleri Seviye Donanım Sistemleri"
            }
        ],

        "Oyun Ve Etkileşim Teknolojileri Yüksek Lisansüstü":
        [
            "Sayısal Dersler",
            {
                "dersBir":"Calculus",
                "dersİki":"Fizik",
                "dersUc":"Programlama",
                "dersDort":"Operating Systems",
                "dersBes":"Database Systems"
            },
           
            "Sözel Dersler",
            {
                "dersBir":"Türk Dili",
                "dersİki":"Atatürk Ve İnkılap Tarihi",
                "dersUc":"İngilizce",
                "dersDort":"Temel Almanca",
                "dersBes":"Tarih"
            },

            "Seçmeli Dersler",
            {
              "dersBir":"Seçmeli İleri Seviye Matematik",
              "dersİki":"Seçmeli Temel Dini Bilgiler",
              "dersUc":"Seçmeli Temel Fransızca",
              "dersDort":"Seçmeli İleri Seviye Donanım Sistemleri"
            }
        ],

        "Bilgi Teknolojileri Tezsiz Yüksek":
        [
            "Sayısal Dersler",
            {
                "dersBir":"Calculus",
                "dersİki":"Fizik",
                "dersUc":"Programlama",
                "dersDort":"Operating Systems",
                "dersBes":"Database Systems"
            },
           
            "Sözel Dersler",
            {
                "dersBir":"Türk Dili",
                "dersİki":"Atatürk Ve İnkılap Tarihi",
                "dersUc":"İngilizce",
                "dersDort":"Temel Almanca",
                "dersBes":"Tarih"
            },

            "Seçmeli Dersler",
            {
              "dersBir":"Seçmeli İleri Seviye Matematik",
              "dersİki":"Seçmeli Temel Dini Bilgiler",
              "dersUc":"Seçmeli Temel Fransızca",
              "dersDort":"Seçmeli İleri Seviye Donanım Sistemleri"
            }
        ]

      }
    ]
],




    "jeofizik_muhendisligi_bolumu":
   [
        "Eğitim"
    ,[
     "Lisans Programları",{
        "Bilgisayar Mühendisliği":[
            "Sayısal Dersler",
            {
                "dersBir":"Fizik",
                "dersİki":"Matematik",
                "dersUc":"Ayrık Matematik",
                "dersDort":"Veri Yapıları",
                "dersBes":"Mikrobilgisayar",
                "dersAlti":"Software Engineering",
                "dersYedi":"Veri Tabanı Sistemleri"
            },
            "Sözel Dersler",
            {
                "dersBir":"Türk Dili",
                "dersİki":"Atatürk Ve İnkılap Tarihi",
                "dersUc":"İngilizce",
                "dersDort":"Temel Almanca",
                "dersBes":"Tarih"
            },
            "Seçmeli Dersler",
            {
              "dersBir":"Seçmeli İleri Seviye Matematik",
              "dersİki":"Seçmeli Temel Dini Bilgiler",
              "dersUc":"Seçmeli Temel Fransızca",
              "dersDort":"Seçmeli İleri Seviye Donanım Sistemleri"
            }
           
        ],

        "Bilişim Sistemleri Mühendisliği (SUNY)":
        [
            "Sayısal Dersler",
            {
                "dersBir":"Calculus",
                "dersİki":"Fizik",
                "dersUc":"Programlama",
                "dersDort":"Operating Systems",
                "dersBes":"Database Systems"
            },
           
            "Sözel Dersler",
            {
                "dersBir":"Türk Dili",
                "dersİki":"Atatürk Ve İnkılap Tarihi",
                "dersUc":"İngilizce",
                "dersDort":"Temel Almanca",
                "dersBes":"Tarih"
            },

            "Seçmeli Dersler",
            {
              "dersBir":"Seçmeli İleri Seviye Matematik",
              "dersİki":"Seçmeli Temel Dini Bilgiler",
              "dersUc":"Seçmeli Temel Fransızca",
              "dersDort":"Seçmeli İleri Seviye Donanım Sistemleri"
            }
        ]

        },

       "Lisansüstü Programlar",{
        "Bilgisayar Mühendisliği Lisansüstü":
        [
            "Sayısal Dersler",
            {
                "dersBir":"Calculus",
                "dersİki":"Fizik",
                "dersUc":"Programlama",
                "dersDort":"Operating Systems",
                "dersBes":"Database Systems"
            },
           
            "Sözel Dersler",
            {
                "dersBir":"Türk Dili",
                "dersİki":"Atatürk Ve İnkılap Tarihi",
                "dersUc":"İngilizce",
                "dersDort":"Temel Almanca",
                "dersBes":"Tarih"
            },

            "Seçmeli Dersler",
            {
              "dersBir":"Seçmeli İleri Seviye Matematik",
              "dersİki":"Seçmeli Temel Dini Bilgiler",
              "dersUc":"Seçmeli Temel Fransızca",
              "dersDort":"Seçmeli İleri Seviye Donanım Sistemleri"
            }
        ],

        "Oyun Ve Etkileşim Teknolojileri Yüksek Lisansüstü":
        [
            "Sayısal Dersler",
            {
                "dersBir":"Calculus",
                "dersİki":"Fizik",
                "dersUc":"Programlama",
                "dersDort":"Operating Systems",
                "dersBes":"Database Systems"
            },
           
            "Sözel Dersler",
            {
                "dersBir":"Türk Dili",
                "dersİki":"Atatürk Ve İnkılap Tarihi",
                "dersUc":"İngilizce",
                "dersDort":"Temel Almanca",
                "dersBes":"Tarih"
            },

            "Seçmeli Dersler",
            {
              "dersBir":"Seçmeli İleri Seviye Matematik",
              "dersİki":"Seçmeli Temel Dini Bilgiler",
              "dersUc":"Seçmeli Temel Fransızca",
              "dersDort":"Seçmeli İleri Seviye Donanım Sistemleri"
            }
        ],

        "Bilgi Teknolojileri Tezsiz Yüksek":
        [
            "Sayısal Dersler",
            {
                "dersBir":"Calculus",
                "dersİki":"Fizik",
                "dersUc":"Programlama",
                "dersDort":"Operating Systems",
                "dersBes":"Database Systems"
            },
           
            "Sözel Dersler",
            {
                "dersBir":"Türk Dili",
                "dersİki":"Atatürk Ve İnkılap Tarihi",
                "dersUc":"İngilizce",
                "dersDort":"Temel Almanca",
                "dersBes":"Tarih"
            },

            "Seçmeli Dersler",
            {
              "dersBir":"Seçmeli İleri Seviye Matematik",
              "dersİki":"Seçmeli Temel Dini Bilgiler",
              "dersUc":"Seçmeli Temel Fransızca",
              "dersDort":"Seçmeli İleri Seviye Donanım Sistemleri"
            }
        ]

      }
    ]
   ]
 

 
 

}

Kodum bu. Sadece JSON'da diziler için alıştırma yaptım. Alıştırma ise şu: İTÜ'de ki 2 bölümdeki olan Lisansların içindeki lisans programları ve dersleri. Bilgisayar mühendisliği kısmını İTÜ'nün sitesinden bakarak yaptım. Jeofizik kısmını kopyala yapıştır yaptım.

Mantık olarak doğru bir şema mı?
 
JSON prettier tarzı sitelere yapıştır eğer çıktı veriyorsa, JSON yapısal olarak doğru.
Evet hocam denedim şu anda 2 sitede çıktı veriyor hepsi.

Doğru görünüyor.
Burada sorunsuz formatlanabiliyor:
Teşekkür ederim. Burda da denedim çıktı veriyor.
 
JSON Schema != Json.

JSON schema teknik olarak gecerli bir JSON'dur fakat sonsuz tane farkli JSON icerigini valide etmek icin kullanilir.

Ornegin bu bir JSON Schema:

JSON:
{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "https://json-schema.org/draft/2020-12/schema",
    "$vocabulary": {
        "https://json-schema.org/draft/2020-12/vocab/core": true,
        "https://json-schema.org/draft/2020-12/vocab/applicator": true,
        "https://json-schema.org/draft/2020-12/vocab/unevaluated": true,
        "https://json-schema.org/draft/2020-12/vocab/validation": true,
        "https://json-schema.org/draft/2020-12/vocab/meta-data": true,
        "https://json-schema.org/draft/2020-12/vocab/format-annotation": true,
        "https://json-schema.org/draft/2020-12/vocab/content": true
    },
    "$dynamicAnchor": "meta",

    "title": "Core and Validation specifications meta-schema",
    "allOf": [
        {"$ref": "meta/core"},
        {"$ref": "meta/applicator"},
        {"$ref": "meta/unevaluated"},
        {"$ref": "meta/validation"},
        {"$ref": "meta/meta-data"},
        {"$ref": "meta/format-annotation"},
        {"$ref": "meta/content"}
    ],
    "type": ["object", "boolean"],
    "$comment": "This meta-schema also defines keywords that have appeared in previous drafts in order to prevent incompatible extensions as they remain in common use.",
    "properties": {
        "definitions": {
            "$comment": "\"definitions\" has been replaced by \"$defs\".",
            "type": "object",
            "additionalProperties": { "$dynamicRef": "#meta" },
            "deprecated": true,
            "default": {}
        },
        "dependencies": {
            "$comment": "\"dependencies\" has been split and replaced by \"dependentSchemas\" and \"dependentRequired\" in order to serve their differing semantics.",
            "type": "object",
            "additionalProperties": {
                "anyOf": [
                    { "$dynamicRef": "#meta" },
                    { "$ref": "meta/validation#/$defs/stringArray" }
                ]
            },
            "deprecated": true,
            "default": {}
        },
        "$recursiveAnchor": {
            "$comment": "\"$recursiveAnchor\" has been replaced by \"$dynamicAnchor\".",
            "$ref": "meta/core#/$defs/anchorString",
            "deprecated": true
        },
        "$recursiveRef": {
            "$comment": "\"$recursiveRef\" has been replaced by \"$dynamicRef\".",
            "$ref": "meta/core#/$defs/uriReferenceString",
            "deprecated": true
        }
    }
}


Bu schema'yi kullanarak baska bir JSON'i valide edebilirsin. Senin ilk mesajda belirttigin herhangi bir schema tanimi icermiyor.
 
JSON Schema != Json.

JSON schema teknik olarak gecerli bir JSON'dur fakat sonsuz tane farkli JSON icerigini valide etmek icin kullanilir.

Ornegin bu bir JSON Schema:

JSON:
{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "https://json-schema.org/draft/2020-12/schema",
    "$vocabulary": {
        "https://json-schema.org/draft/2020-12/vocab/core": true,
        "https://json-schema.org/draft/2020-12/vocab/applicator": true,
        "https://json-schema.org/draft/2020-12/vocab/unevaluated": true,
        "https://json-schema.org/draft/2020-12/vocab/validation": true,
        "https://json-schema.org/draft/2020-12/vocab/meta-data": true,
        "https://json-schema.org/draft/2020-12/vocab/format-annotation": true,
        "https://json-schema.org/draft/2020-12/vocab/content": true
    },
    "$dynamicAnchor": "meta",

    "title": "Core and Validation specifications meta-schema",
    "allOf": [
        {"$ref": "meta/core"},
        {"$ref": "meta/applicator"},
        {"$ref": "meta/unevaluated"},
        {"$ref": "meta/validation"},
        {"$ref": "meta/meta-data"},
        {"$ref": "meta/format-annotation"},
        {"$ref": "meta/content"}
    ],
    "type": ["object", "boolean"],
    "$comment": "This meta-schema also defines keywords that have appeared in previous drafts in order to prevent incompatible extensions as they remain in common use.",
    "properties": {
        "definitions": {
            "$comment": "\"definitions\" has been replaced by \"$defs\".",
            "type": "object",
            "additionalProperties": { "$dynamicRef": "#meta" },
            "deprecated": true,
            "default": {}
        },
        "dependencies": {
            "$comment": "\"dependencies\" has been split and replaced by \"dependentSchemas\" and \"dependentRequired\" in order to serve their differing semantics.",
            "type": "object",
            "additionalProperties": {
                "anyOf": [
                    { "$dynamicRef": "#meta" },
                    { "$ref": "meta/validation#/$defs/stringArray" }
                ]
            },
            "deprecated": true,
            "default": {}
        },
        "$recursiveAnchor": {
            "$comment": "\"$recursiveAnchor\" has been replaced by \"$dynamicAnchor\".",
            "$ref": "meta/core#/$defs/anchorString",
            "deprecated": true
        },
        "$recursiveRef": {
            "$comment": "\"$recursiveRef\" has been replaced by \"$dynamicRef\".",
            "$ref": "meta/core#/$defs/uriReferenceString",
            "deprecated": true
        }
    }
}


Bu schema'yi kullanarak baska bir JSON'i valide edebilirsin. Senin ilk mesajda belirttigin herhangi bir schema tanimi icermiyor.
Bunu bilmiyordum. Teşekkür ederim 😍
 
Bu json neye hizmet edecek bilmiyorum ama mümkün olduğunca key value standartı tutturulursa ve çoklu olanlar arrayde tutulursa daha doğru bir veri yapısı olur, tabi ki

{"okul":"İstanbul Teknik Üniversitesi"

mesela okula dair başka bilgiler de mevcuttur, idsi olabilir, adresi olabilir

"okul":
{
"name": "İstanbul Teknik Üniversitesi",
"id": "123",
"code": "ITU",
"city":"Istanbul"...

ya da

"bilgisayar_muhendisliği_bolumu":[
"Eğitim"
,[
"Lisans Programları",{

arrayde niye eğitim diye bir eleman var ki? Ya da "Lisans Programları" neden array içinde aynı şekilde?

"dersBir":"Fizik",
"dersİki":"Matematik",

bunları da array yerine object içinde tutmak, dersBir, dersİki şeklinde key kullanmak doğru değil.

Json valid görünüyor olabilir ama veri yapısı sıkıntılı, mesela array ve nesnelere biraz daha dikkat edip şuna benzer bir yapı oluşturabilirsin.


JSON:
{
  "okullar": [
    {
      "name": "İstanbul Teknik Üniversitesi",
      "id": "123",
      "code": "ITU",
      "city": "Istanbul",
      "bölümler": [
        {
          "name": "bilgisayar_muhendisliği_bolumu",
          "code": "bilmuh",
          "Lisans Programları": [
            {
              "name": "Bilgisayar Mühendisliği",
              "Sayısal Dersler": [
                {
                  "name": "Fizik",
                  "code": "FIZ"
                },
                {
                  "name": "Matematik",
                  "code": "MAT"
                },
                {
                  "name": "Ayrık Matematik",
                  "code": "DISC"
                }
              ],
              "Sözel Dersler": [
                {
                  "name": "Türk Dili",
                  "code": "TUR"
                },
                {
                  "name": "Atatürk Ve İnkılap Tarihi",
                  "code": "HIST"
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}
 

Technopat Haberler

Yeni konular

Geri
Yukarı