Dapat komentar yang akan digunakan dalam JSON?

Saya dapat menggunakan komentar dalam file JSON? Jika demikian, bagaimana?

Mengomentari pertanyaan (16)
Larutan

No.

JSON semua harus data, dan jika anda memiliki komentar, maka akan data juga.

Anda bisa memiliki tempat khusus elemen data yang disebut "_comment" (atau sesuatu) yang akan diabaikan oleh aplikasi yang menggunakan data JSON.

Anda mungkin akan lebih baik memiliki komentar dalam proses yang menghasilkan/menerima JSON, seperti yang seharusnya mereka tahu apa itu data JSON akan terlebih dahulu, atau setidaknya struktur itu.

Tetapi jika anda memutuskan untuk:

{
   "_comment": "comment text goes here...",
   "glossary": {
      "title": "example glossary",
      "GlossDiv": {
         "title": "S",
         "GlossList": {
            "GlossEntry": {
               "ID": "SGML",
               "SortAs": "SGML",
               "GlossTerm": "Standard Generalized Markup Language",
               "Acronym": "SGML",
               "Abbrev": "ISO 8879:1986",
               "GlossDef": {
                  "para": "A meta-markup language, used to create markup languages such as DocBook.",
                  "GlossSeeAlso": ["GML", "XML"]
               },
               "GlossSee": "markup"
            }
         }
      }
   }
}
Komentar (26)

Tidak ada, komentar-komentar dari bentuk //... atau /*...*/ tidak diperbolehkan dalam JSON. Jawaban ini didasarkan pada:

  • http://www.json.org
  • RFC 4627: The application/json Jenis Media untuk JavaScript Object Notation (JSON)
  • RFC 8259 JavaScript Object Notation (JSON) Data Interchange Format (perda Rfc 4627, 7158, 7159)
Komentar (13)

Sertakan komentar jika anda memilih; strip mereka keluar dengan minifier sebelum parsing atau transmisi.

Aku hanya dirilis JSON.mengecilkan() yang strip komentar dan spasi dari blok JSON dan membuatnya berlaku JSON yang dapat diurai. Jadi, anda bisa menggunakannya seperti:

JSON.parse(JSON.minify(my_str));

Ketika saya dibebaskan, saya mendapat pukulan besar dari orang-orang yang tidak setuju dengan ide itu, jadi saya memutuskan bahwa saya'd menulis sebuah blog yang komprehensif posting tentang mengapa komentar-komentar yang masuk akal dalam JSON. Itu termasuk terkenal ini komentar dari sang pencipta dari JSON:

Misalkan anda menggunakan JSON untuk menjaga file-file konfigurasi, yang anda akan ingin untuk memberikan keterangan. Pergi ke depan dan menyisipkan semua komentar yang anda suka. Kemudian pipa melalui JSMin sebelum menyerahkannya ke JSON parser. - Douglas Crockford, 2012

Mudah-mudahan yang's membantu mereka yang tidak setuju dengan mengapa JSON.mengecilkan() bisa berguna.

Komentar (23)

Komentar telah dihapus dari JSON dengan desain.

komentar saya dihapus dari JSON karena saya melihat orang-orang yang menggunakan mereka untuk menahan parsing arahan, sebuah praktek yang akan menghancurkan interoperabilitas. Aku tahu bahwa kurangnya komentar membuat beberapa orang sedih, tapi itu seharusnya't.

Misalkan anda menggunakan JSON untuk menjaga file-file konfigurasi, yang anda akan ingin untuk memberikan keterangan. Pergi ke depan dan menyisipkan semua komentar yang anda suka. Kemudian pipa melalui JSMin sebelum menyerahkannya ke JSON parser.

Sumber: pernyataan Publik oleh Douglas Crockford pada G+

Komentar (22)

DISCLAIMER: GARANSI ANDA MENJADI BATAL

Seperti yang telah ditunjukkan, hack ini mengambil keuntungan dari pelaksanaan spec. Tidak semua JSON parser akan mengerti hal semacam ini JSON. Streaming parsers khususnya akan tersedak.

It's yang menarik rasa ingin tahu, tetapi anda harus benar-benar tidak dapat menggunakannya untuk apa saja. Di bawah ini adalah jawaban asli.


I've ditemukan sedikit hack yang memungkinkan anda untuk menempatkan komentar dalam file JSON yang tidak akan mempengaruhi parsing, atau mengubah data yang direpresentasikan dalam cara apapun.

Tampaknya bahwa ketika mendeklarasikan sebuah objek literal dapat anda tentukan dua nilai dengan kunci yang sama, dan terakhir harus didahulukan. Percaya atau tidak, ternyata JSON parser bekerja dengan cara yang sama. Jadi kita dapat menggunakan ini untuk membuat komentar dalam source JSON yang tidak akan hadir dalam diurai objek representasi.

({a: 1, a: 2});
// => Object {a: 2}
Object.keys(JSON.parse('{"a": 1, "a": 2}')).length; 
// => 1

Jika kita menerapkan teknik ini, anda berkomentar JSON file akan terlihat seperti ini:

{
  "api_host" : "The hostname of your API server. You may also specify the port.",
  "api_host" : "hodorhodor.com",

  "retry_interval" : "The interval in seconds between retrying failed API calls",
  "retry_interval" : 10,

  "auth_token" : "The authentication token. It is available in your developer dashboard under 'Settings'",
  "auth_token" : "5ad0eb93697215bc0d48a7b69aa6fb8b",

  "favorite_numbers": "An array containing my all-time favorite numbers",
  "favorite_numbers": [19, 13, 53]
}

Kode di atas adalah berlaku JSON. Jika anda mengurai, anda'll mendapatkan sebuah objek seperti ini:

{
    "api_host": "hodorhodor.com",
    "retry_interval": 10,
    "auth_token": "5ad0eb93697215bc0d48a7b69aa6fb8b",
    "favorite_numbers": [19,13,53]
}

Yang berarti tidak ada jejak komentar, dan mereka tidak't memiliki efek samping aneh.

Selamat hacking!

Komentar (41)

JSON tidak mendukung komentar. Hal itu juga tidak pernah dimaksudkan untuk digunakan untuk file-file konfigurasi di mana komentar yang akan diperlukan.

Hjson adalah konfigurasi file format untuk manusia. Super sintaks, kesalahan lebih sedikit, lebih banyak komentar.

Lihat hjson.org untuk JavaScript, Java, Python, PHP, Karat, Pergi, Ruby dan C# perpustakaan.

Komentar (7)

Pertimbangkan untuk menggunakan YAML. It's hampir superset dari JSON (hampir semua valid JSON adalah valid YAML) dan memungkinkan komentar.

Komentar (20)

Anda dapat't. Setidaknya itu's pengalaman saya dari sekilas json.org.

JSON memiliki sintaks divisualisasikan pada halaman tersebut. Ada isn't catatan apapun tentang komentar.

Komentar (0)

Anda harus menulis JSON skema sebagai gantinya. JSON skema saat ini diusulkan Internet spesifikasi rancangan. Selain dokumentasi, skema ini juga dapat digunakan untuk validasi data JSON.

Contoh:

{
    "description":"A person",
    "type":"object",
    "properties":
        {
            "name":
                {
                    "type":"string"
                },
            "age":
                {
                    "type":"integer",
                    "maximum":125
                }
        }
}

Anda dapat memberikan dokumentasi dengan menggunakan deskripsi skema atribut.

Komentar (6)

Jika anda menggunakan Jackson sebagai JSON parser maka ini adalah bagaimana anda memungkinkan untuk mengijinkan komentar:

ObjectMapper mapper = new ObjectMapper().configure(Feature.ALLOW_COMMENTS, true);

Kemudian anda dapat memiliki komentar seperti ini:

{
  key: "value" // Comment
}

Dan anda juga dapat memiliki komentar yang diawali dengan # dengan menetapkan:

mapper.configure(Feature.ALLOW_YAML_COMMENTS, true);

Tapi secara umum (seperti yang dijawab sebelum) spesifikasi tidak mengijinkan komentar.

Komentar (0)

Komentar yang tidak standar resmi. Meskipun beberapa dukungan parser C-gaya komentar. Salah satu yang saya gunakan adalah JsonCpp. Dalam contoh-contoh yang ada adalah yang satu ini:

// Configuration options
{
    // Default encoding for text
    "encoding" : "UTF-8",

    // Plug-ins loaded at start-up
    "plug-ins" : [
        "python",
        "c++",
        "ruby"
        ],

    // Tab indent size
    "indent" : { "length" : 3, "use_space": true }
}

jsonlint tidak memvalidasi hal ini. Begitu komentar seorang parser ekstensi tertentu dan tidak standar.

Lain parser JSON5.

Alternatif untuk JSON TOML.

Selanjutnya alternatif jsonc.

Komentar (1)

Berikut adalah apa yang saya temukan di Google Firebase dokumentasi yang memungkinkan anda untuk menempatkan komentar dalam JSON:

{
  "//": "Some browsers will use this to enable push notifications.",
  "//": "It is the same for all projects, this is not your project's sender ID",
  "gcm_sender_id": "1234567890"
}
Komentar (5)

Jika anda file teks, yang merupakan string JSON, akan dibaca oleh beberapa program, bagaimana sulit itu akan strip baik C atau C++ style komentar sebelum menggunakannya?

Jawaban: Ini akan menjadi salah satu kapal. Jika anda melakukan itu maka file JSON dapat digunakan sebagai file konfigurasi.

Komentar (6)

Jika anda menggunakan Newtonsoft.Json perpustakaan dengan ASP.NET untuk membaca/deserialize anda dapat menggunakan komentar di konten JSON:

//"": "string"

//"id": int

atau

/* Ini adalah

komentar contoh */

PS: Single-baris komentar hanya didukung dengan 6+ versi Newtonsoft Json.

Catatan tambahan untuk orang-orang yang dapat't think out of the box: saya menggunakan format JSON untuk pengaturan dasar dalam ASP.NET aplikasi web yang saya buat. Aku membaca file, mengkonversi ke pengaturan objek dengan Newtonsoft perpustakaan dan menggunakannya bila diperlukan.

Saya lebih memilih menulis komentar tentang masing-masing individu pengaturan dalam file JSON sendiri, dan aku benar-benar don't peduli tentang integritas format JSON sebagai library yang saya gunakan adalah OK dengan itu.

Saya pikir ini adalah 'lebih mudah untuk menggunakan/memahami' cara membuat terpisah 'pengaturan.README' file dan menjelaskan pengaturan di dalamnya.

Jika anda memiliki masalah dengan jenis penggunaan; maaf, jin yang keluar dari lampu. Orang-orang akan menemukan penggunaan lainnya untuk format JSON, dan tidak ada yang dapat anda lakukan tentang hal itu.

Komentar (4)

Ide di balik JSON adalah untuk memberikan sederhana, pertukaran data antara aplikasi. Ini biasanya berbasis web dan bahasa JavaScript.

Itu doesn't benar-benar memungkinkan untuk komentar seperti itu, namun, lewat komentar sebagai salah satu pasangan nama/nilai di dalam data pasti akan bekerja, meskipun data tersebut jelas akan harus diabaikan atau tidak ditangani secara khusus oleh parsing kode.

Semua yang mengatakan,'s tidak niat bahwa JSON file harus berisi komentar dalam arti tradisional. Itu hanya harus menjadi data.

Silahkan lihat di JSON web untuk lebih detail.

Komentar (5)

Aku hanya menghadapi ini untuk file-file konfigurasi. Saya don't ingin menggunakan XML (verbose, grafis, jelek, sulit untuk dibaca), atau "ini" format (tidak ada hirarki, tidak ada standar nyata, dll.) atau Java "Sifat" format (seperti .ini).

JSON dapat melakukan semua yang mereka bisa lakukan, tapi itu adalah cara yang kurang verbose dan lebih lanjut dapat dibaca manusia - dan parser yang mudah dan di mana-mana dalam banyak bahasa. It's hanya pohon dari data. Tapi out-of-band komentar adalah kebutuhan sering untuk dokumen "default" konfigurasi dan sejenisnya. Konfigurasi yang tidak pernah "dokumen lengkap", tapi pohon-pohon yang disimpan data yang dapat dibaca manusia bila diperlukan.

Saya kira orang bisa menggunakan "#": "komentar", untuk "yang masih berlaku" JSON.

Komentar (5)

JSON tidak mendukung komentar native, tetapi anda dapat membuat anda sendiri decoder atau setidaknya preprocessor untuk menghapus komentar, yang's baik-baik saja (asalkan anda hanya mengabaikan komentar dan don't menggunakannya untuk memandu bagaimana aplikasi anda harus memproses data JSON).

JSON tidak memiliki komentar. JSON encoder TIDAK boleh output komentar. JSON decoder DAPAT menerima dan mengabaikan komentar.

Komentar tidak boleh digunakan untuk mengirimkan sesuatu yang berarti. Yang apa JSON adalah untuk.

Lih: Douglas Crockford, penulis JSON spec.

Komentar (1)

Itu tergantung pada anda JSON library. Json.NET mendukung JavaScript-gaya komentar, /* commment */.

Lihat lain Stack Overflow pertanyaan.

Komentar (1)

JSON membuat banyak akal untuk config file dan lain penggunaan lokal karena itu's di mana-mana dan karena itu's jauh lebih sederhana dari XML.

Jika orang-orang memiliki alasan yang kuat terhadap memiliki komentar di JSON ketika berkomunikasi data (apakah valid atau tidak), maka mungkin JSON bisa dibagi menjadi dua:

  • JSON-COM: JSON pada kawat, atau aturan-aturan yang berlaku ketika berkomunikasi data JSON.
  • JSON-DOC: dokumen JSON, atau JSON dalam file atau lokal. Aturan yang menentukan sah dokumen JSON.

JSON-DOC akan mengijinkan komentar, dan lain perbedaan-perbedaan kecil yang mungkin ada seperti penanganan spasi. Parser dapat dengan mudah mengkonversi dari satu spec yang lain.

Berkaitan dengan komentar yang dibuat oleh Douglas Crockford pada masalah ini (direferensikan oleh @Artur Czajka)

Misalkan anda menggunakan JSON untuk menjaga file-file konfigurasi, yang anda akan ingin untuk memberikan keterangan. Pergi ke depan dan menyisipkan semua komentar yang anda suka. Kemudian pipa melalui JSMin sebelum menyerahkannya ke JSON parser.

Kami're berbicara tentang generik config masalah (lintas bahasa/platform), dan dia's menjawab dengan JS tertentu utilitas!

Yakin JSON tertentu mengecilkan dapat diimplementasikan dalam setiap bahasa, tapi standarisasi ini sehingga menjadi mana-mana di seluruh parser dalam semua bahasa dan platform sehingga orang berhenti membuang-buang waktu mereka kurang tidur karena mereka memiliki penggunaan yang baik-kasus untuk itu, mencari masalah di forum online, dan mendapatkan orang-orang yang mengatakan mereka itu's merupakan ide yang buruk atau menunjukkan hal itu's mudah untuk menerapkan pengupasan komentar dari file teks.

Masalah lain adalah interoperabilitas. Misalkan anda memiliki sebuah library atau API atau jenis subsistem yang memiliki beberapa konfigurasi atau file data yang terkait dengan itu. Dan subsistem ini adalah dapat diakses dari berbagai bahasa. Kemudian anda pergi tentang memberitahu orang-orang: dengan cara don't lupa untuk menghapus komentar-komentar dari file JSON sebelum melewati mereka ke parser!

Komentar (1)

JSON digunakan untuk mendukung komentar, tapi mereka disalahgunakan dan dihapus dari standar.

Dari pencipta dari JSON:

komentar saya dihapus dari JSON karena saya melihat orang-orang yang menggunakan mereka untuk menahan parsing arahan, sebuah praktek yang akan menghancurkan interoperabilitas. Aku tahu bahwa kurangnya komentar membuat beberapa orang sedih, tapi itu seharusnya't. - Douglas Crockford, 2012

Resmi JSON situs ini di JSON.org. JSON didefinisikan sebagai standar oleh ECMA International. Selalu ada proses permohonan untuk memiliki standar yang direvisi. Hal ini tidak mungkin bahwa penjelasan akan ditambahkan ke JSON standar untuk beberapa alasan.

JSON dengan desain yang mudah reverse-engineered (manusia diurai) alternatif untuk XML. Hal ini disederhanakan bahkan ke titik bahwa penjelasan yang tidak perlu. Itu bahkan bukan sebuah bahasa markup. Tujuannya adalah stabilitas dan interoperablilty.

Siapa saja yang memahami "yang" hubungan orientasi objek dapat memahami setiap struktur JSON - itu adalah seluruh titik. Itu hanya sebuah directed acyclic graph (DAG) dengan node kategori (pasangan kunci/nilai), yang universal dekat struktur data.

Ini hanya penjelasan yang diperlukan mungkin "//Ini adalah DAG kategori". Kunci nama dapat sebagai informasi yang diperlukan, memungkinkan sewenang-wenang semantik tual membaca, keakraban.

Platform apapun dapat mem-parsing JSON dengan hanya beberapa baris kode. XML kompleks membutuhkan OO perpustakaan yang tidak layak di banyak platform.

Penjelasan hanya akan membuat JSON membuat kurang interoperable. Ada hanya tidak ada yang lain untuk menambah, kecuali apa yang benar-benar anda butuhkan adalah sebuah markup language (XML), dan don't peduli jika anda bertahan data lebih mudah diurai.

Komentar (0)