JSON හි අදහස් දැක්විය හැකිද?


7615

මට JSON ගොනුවක් තුළ අදහස් භාවිතා කළ හැකිද? එසේ නම්, කෙසේද?


153
Ting ස්ටිං ජැක්: පැහැදිලිව පෙනෙන්නට නැති දේවල් හෝ වෙනත් අයෙකු අදහස් දැක්වීම් සමඟ පැහැදිලි කිරීම. මට බොහෝ විට දත්ත ලිපිගොනු වල අදහස් ඇත. එක්ස්එම්එල්, ඉනි ලිපිගොනු සහ තවත් බොහෝ ආකෘති වලට අදහස් දැක්වීමේ ප්‍රතිපාදන ඇතුළත් වේ.
මයිකල් බර්

24
උසස් //commentsපෙළ වින්‍යාස ගොනුවක නිශ්චිත භාවිත අවස්ථාව සඳහා ඔබත් මා මෙන් කල්පනා කරනවා නම්, පිළිතුර ඔව් (2 වන අනුවාදය අනුව). උත්කෘෂ්ට පෙළ ඒ ගැන පැමිණිලි නොකරනු ඇත, අවම වශයෙන් එය {"__comment": ...}කොන්සෝලය තුළ පැමිණිලි කරනු ඇත , මන්ද එය අනපේක්ෂිත ක්ෂේත්‍රයකි.
driftcatcher

8
සමහර විට මෙය ටොම්එල් නිර්මාණය වීමට එක් හේතුවක් විය හැකිය ..
ඇලෙක්ස් නොලාස්කෝ

10
තරමක් විකාර සහගත නමුත්, මම JSON හි අදහස් දැක්වීම සඳහා // භාවිතා කිරීමට උත්සාහ කළෙමි. අන්තර් හුවමාරුව / හුවමාරුව සඳහා එය දැඩි ලෙස භාවිතා කරන බව දැන් මට වැටහී ඇත. සැනසුම් සුසුමක්! මට තවදුරටත් අදහස් දැක්විය නොහැක :(. ජීවිතය විනාශ වී ඇත!
සිද්

12
JSON5 අදහස් දැක්වීම් සඳහා සහය දක්වයි: stackoverflow.com/a/7901053/108238
schoetbi

Answers:


5598

නොමැත.

JSON සියල්ල දත්ත විය යුතු අතර, ඔබ අදහස් දැක්වීමක් ඇතුළත් කළහොත් එය දත්ත ද වනු ඇත.

"_comment"JSON දත්ත භාවිතා කරන යෙදුම් විසින් නොසලකා හරිනු ලබන (හෝ වෙනත්) නම් කරන ලද දත්ත මූලද්‍රව්‍යයක් ඔබට තිබිය හැකිය .

JSON දත්ත කල්තියා කුමක් වනු ඇත්දැයි හෝ අවම වශයෙන් එහි ව්‍යුහය ගැන ඔවුන් දැන සිටිය යුතු බැවින්, JSON ජනනය කරන / ලබා ගන්නා ක්‍රියාවලීන්හි අදහස් දැක්වීම වඩා හොඳ වනු ඇත.

නමුත් ඔබ තීරණය කළේ නම්:

{
   "_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"
            }
         }
      }
   }
}

233
වලංගු ක්ෂේත්‍රයක් කවදා හෝ තිබේ නම් සත්‍ය අදහස් දැක්වීමට යම් ආකාරයක උපසර්ගයක් ලබා ගැනීමට එය ගෙවිය හැකිය:"__comment":"comment text goes here...",
රොබ් ෆොන්සෙකා-එන්සෝර්

19
BTW, Java google-gson සඳහා වන json පුස්තකාලයට අදහස් දැක්වීම් සඳහා සහය ඇත.
centic

11
දේපල Accronymසහ Abbrevදේපල පිළිබඳව වෙනම අදහස් දැක්වීමට මට අවශ්‍ය නම් කුමක් කළ යුතුද? මම මීට පෙර මෙම රටාව භාවිතා කර ඇති නමුත් එය කිරීමට මට ඉඩ නොදෙන බැවින් එය නතර කර ඇත. එය කඩුල්ලකි. සමහර විට මම __comment__ඒ වෙනුවට දේපල නමක් සකස් කළහොත් . එය "__comment__Abbrev", එය තවමත් අනවසරයකි, නමුත් මට සියලු ප්‍රොපර්ටීස් ගැන අදහස් දැක්වීමට ඉඩ දෙන්නෙමි
ජුවාන් මෙන්ඩිස්

41
ඔබට "//" ද භාවිතා කළ හැකිය: මෙය වඩාත් ස්වදේශීය පෙනුමක් ඇති අතර එය තවමත් එකම දෙමව්පියන් තුළ පුනරාවර්තනය වේ
smnbbrv

5
මිනිසා විසින් අරමුණු කරගත් වින්‍යාස ගොනු සඳහා JSON භාවිතා කරන විට, මිනිසුන්ට වඩා හොඳින් අවබෝධ කර ගැනීම සඳහා ඒවා විවරණය කළ යුතුය. විවරණය කර ඇත, එවැනි ගොනුවක් තවදුරටත් වලංගු නොවේ JSON, නමුත් විසඳුම් තිබේ. උදාහරණයක් ලෙස, ගූගල් හි GYP # විලාසිතාවේ අදහස් සඳහා සහය දක්වයි. ඔබේ ආදාන ගොනුවෙන් C / C ++ විලාසිතාවේ අදහස් ඉවත දැමීමට JSON.Minify ඔබට උදව් වනු ඇත.
Петър Петров

1842

නැත , පෝරමයේ අදහස් //…හෝ /*…*/JSON හි අවසර නැත. මෙම පිළිතුර පදනම් වී ඇත්තේ:

  • http://www.json.org
  • RFC 4627 : application/jsonජාවාස්ක්‍රිප්ට් වස්තු අංකනය සඳහා මාධ්‍ය වර්ගය (JSON)
  • RFC 8259 ජාවාස්ක්‍රිප්ට් වස්තු අංකනය (JSON) දත්ත හුවමාරු ආකෘතිය (RFCs 4627, 7158, 7159 ඉක්මවා යයි)

67
ඔබගේ JSON අදහස් දැක්වීම් සමඟ විවරණය කිරීමට ඔබ කැමති නම් (එය අවලංගු JSON බවට පත් කරයි), පසුව විග්‍රහ කිරීමට හෝ සම්ප්‍රේෂණය කිරීමට පෙර එය අවම කරන්න. වින්‍යාස ලිපිගොනු සන්දර්භය තුළ ක්‍රොක්ෆර්ඩ් විසින්ම මෙය 2012 දී පිළිගත්තේය.
මෙවලම් බෙයාර්

25
@alkuzad: එය විධිමත් ව්යාකරණය ඇතුළත් කිරීමට පැමිණි විට, පැහැදිලි ලෙසම ඔවුන් පවසයි දෙයක් තිබිය යුතු වේ නොහැකි ඉඩ, අනෙක් පැත්ත. නිදසුනක් ලෙස, ඔබේ ක්‍රමලේඛන තේරීමේ භාෂාව ගන්න: සමහර අපේක්ෂිත (නමුත් නැතිවූ) විශේෂාංගයක් පැහැදිලිවම අවසර දී නොමැති නිසා, ඔබේ සම්පාදකයා එය ඉන්ද්‍රජාලිකව හඳුනා ගනී යැයි අදහස් නොකෙරේ.
stakx -

5
ඔව්. JSON ආකෘතියට මූලද්‍රව්‍ය අතර විශාල ඉඩ ප්‍රමාණයක් ඇති අතර එම කලාපවල අවකාශය සංවේදී නොවේ, එබැවින් ඔබට එහි තනි හෝ බහු රේඛා අදහස් දැක්වීමට නොහැකි වීමට හේතුවක් නැත. බොහෝ පාර්සර් සහ මිනිෆයර් JSON අදහස් සඳහාද සහාය දක්වයි, එබැවින් ඔබේ විග්‍රහකයා ඒවාට සහය දක්වන බවට වග බලා ගන්න. යෙදුම් දත්ත සහ වින්‍යාස සැකසුම් සඳහා JSON බොහෝ දේ භාවිතා කරයි, එබැවින් අදහස් දැක්වීම දැන් අවශ්‍ය වේ. "නිල පිරිවිතර" කදිම අදහසකි, නමුත් එය ප්‍රමාණවත් නොවන සහ යල්පැන ඇති, එතරම්ම නරක ය. ඔබ ගෙවීම් ප්‍රමාණය හෝ ක්‍රියාකාරිත්වය ගැන සැලකිලිමත් වන්නේ නම් ඔබේ JSON අවම කරන්න.
ට්‍රයින්කෝ

58
ඔබේ පිළිතුර නියත වශයෙන්ම නිවැරදි වුවත්, මෙය BS යැයි කිව යුතුය. බොහෝ අවසන් පරිශීලකයින් json වින්‍යාස කිරීමේ අවශ්‍යතාවය සපුරාලන හෙයින්, අදහස් දැක්වීම අතිශයින්ම ප්‍රයෝජනවත් වේ. සමහර ටින්-තීරු තොප්පි JSON තීරණය නිසාම සහ සෑම විටම විය යුතුය මිනිසුන් අවශ්යතාවයන්ට එය කියවීමට බව නොතකා හරිමින්, යන්ත්ර කියවිය හැකි වේ, කුඩා දෘෂ්ටිය විශ්වාසයක් නොතබන දර්ශනයකි imho වේ.
cmroanirgo

18
mcmroanirgo: JSON හි එම සීමාව ගැන ඔබ මුලින්ම පැමිණිලි කළේ නැහැ ... ඒ නිසා අපට නිහ ly ව අදහස් දැක්වීමට ඉඩ දෙන පාර්සර් සහ YAML සහ JSON5 වැනි වෙනත් ආකෘතීන් ඇත. කෙසේ වෙතත් මෙය JSON යනු කුමක්ද යන්න වෙනස් නොවේ. ඒ වෙනුවට, මිනිසුන් JSON භාවිතා කිරීම ආරම්භ කිරීම පැහැදිලිවම ප්‍රමාණවත් නොවූ අවස්ථාවන් සඳහා භාවිතා කිරීම ආරම්භ කිරීම සිත්ගන්නා සුළුය. JSON ආකෘතියට දොස් නොකියන්න; එය විශේෂයෙන් සුදුසු නොවන තැනක එය භාවිතා කිරීමට බල කිරීම ගැන අපටම දොස් පවරන්න.
stakx - තවදුරටත්

802

ඔබ තෝරා ගන්නේ නම් අදහස් ඇතුළත් කරන්න; විග්‍රහ කිරීමට හෝ සම්ප්‍රේෂණය කිරීමට පෙර කුඩා යන්ත්‍රයකින් ඒවා ඉවත් කරන්න.

මම දැන් JSON.minify () මුදා හැර ඇති අතර එය JSON කොටසකින් අදහස් සහ හිස් අවකාශය ඉවත් කර එය විග්‍රහ කළ හැකි වලංගු JSON බවට පත් කරයි. එබැවින්, ඔබට එය භාවිතා කළ හැකිය:

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

මම එය මුදා හරින විට, ඒ පිළිබඳ අදහසට පවා එකඟ නොවූ පුද්ගලයින්ගේ විශාල පසුබෑමක් මට ඇති විය, එබැවින් JSON හි අදහස් දැක්වීම් අර්ථවත් වන්නේ මන්ද යන්න පිළිබඳව පුළුල් බ්ලොග් සටහනක් ලිවීමට මම තීරණය කළෙමි . JSON හි නිර්මාතෘගේ මෙම සැලකිය යුතු ප්‍රකාශය එයට ඇතුළත් ය:

ඔබ විවරණය කිරීමට කැමති වින්‍යාස ගොනු තබා ගැනීමට ඔබ JSON භාවිතා කරයි යැයි සිතමු. ඉදිරියට ගොස් ඔබ කැමති සියලු අදහස් ඇතුළත් කරන්න. ඔබේ JSON විග්‍රහකයාට භාර දීමට පෙර එය JSMin හරහා නල කරන්න. - ඩග්ලස් ක්‍රොක්ෆර්ඩ්, 2012

JSON.minify () ප්‍රයෝජනවත් විය හැක්කේ මන්දැයි එකඟ නොවන අයට එය ප්‍රයෝජනවත් වේ යැයි සිතමු .


153
JSON.minify () සමඟ මට ඇති එකම ගැටළුව එය සැබවින්ම මන්දගාමී වීමයි. ඒ නිසා මම මගේම ක්‍රියාවට නැංවූයේ එයම කරන දෙයකි: gist.github.com/1170297 . සමහර විශාල පරීක්ෂණ ලිපිගොනු වලදී ඔබේ ක්‍රියාත්මක කිරීම තත්පර 74 ක් සහ මගේ තත්පර 0.06 ක් ගතවේ.
විස්කිඩ්

56
ඔබට යෝජිත විකල්ප ඇල්ගොරිතම JSON.minify () සඳහා ගිතුබ් රෙපෝ වෙත ඉදිරිපත් කළ හැකි නම් එය ඉතා හොඳ වේ, එවිට එය සියලු සහය දක්වන භාෂාවන් වෙත ගෙන යා හැකිය: github.com/getify/json.minify
කයිල් සිම්සන්

16
InMiniGod මෙම මාතෘකාව පිළිබඳ ඩග්ගේ අදහස් මම දැනටමත් බොහෝ වාරයක් අසා ඇත්තෙමි. මම බොහෝ කලකට පෙර මගේ බ්ලොග් සටහනේ ඔවුන් ඇමතීම
කයිල් සිම්සන්

18
Stn MarnenLaibow-Koser දත්ත ප්‍රවාහය (හෝ පැකට් පවා) භාවිතා කිරීම සඳහා අදහස් දැක්වීම් සඳහා තවමත් වලංගු භාවිතයන් ඇත: නිර්මාණ කාලය හෝ ප්‍රභවයන් වැනි රෝග විනිශ්චය පාර-දත්ත ඇතුළත් කිරීම XML සමඟ පොදු භාවිතයක් වන අතර JSON දත්ත සඳහාද ඉතා සංවේදී වේ. අදහස් දැක්වීමට එරෙහි තර්ක නොගැඹුරු වන අතර, ඕනෑම පා data මය දත්ත ආකෘතියක් අදහස් කිරීමට අදහස් කළද නොසලකා අදහස් දැක්වීමට ඉඩ දිය යුතුය (JSON වෙනත් තැනක භාවිතා කළ නොහැකි බව නිශ්චිතව දක්වා නැත)
StaxMan

18
JSON විශ්වීය පිළිගැනීමක් ලබා ගැනීමට නම් (එය මූලික වශයෙන් එය කරයි) එවිට එයට විශ්වීය යෙදුමක් තිබිය යුතුය. උදාහරණය: JSON හට යෙදුම් වින්‍යාස ගොනුවක් ලෙස සේවය කළ හැකිය. මෙම යෙදුම අදහස් දැක්වීමට කැමති වනු ඇත.
බිත්තර දමන්නන්

441

සැලසුම අනුව JSON වෙතින් අදහස් ඉවත් කරන ලදි.

මම JSON වෙතින් අදහස් ඉවත් කළේ මිනිසුන් විග්‍රහ කිරීමේ විධානයන් භාවිතා කරන බව දුටු නිසාය. අදහස් දැක්වීම් නොමැතිකම සමහර අයට දුකක් බව මම දනිමි, නමුත් එය එසේ නොවිය යුතුය.

ඔබ විවරණය කිරීමට කැමති වින්‍යාස ගොනු තබා ගැනීමට ඔබ JSON භාවිතා කරයි යැයි සිතමු. ඉදිරියට ගොස් ඔබ කැමති සියලු අදහස් ඇතුළත් කරන්න. ඔබේ JSON විග්‍රහකයාට භාර දීමට පෙර එය JSMin හරහා නල කරන්න.

මූලාශ්‍රය: ජී + පිළිබඳ ඩග්ලස් ක්‍රොක්ෆර්ඩ්ගේ ප්‍රසිද්ධ ප්‍රකාශය


198
මම හිතුවේ XSML වලට වඩා JSON කියවිය හැකි මිනිස් කියවීමක් විය යුතුද? අදහස් කියවීමේ හැකියාව සඳහා ය.
intrepidis

25
කෙසේ වෙතත්, ඔබට නපුරු විය හැකි අතර JSON හි විග්‍රහ කිරීමේ විධානයන් එක් කළ හැකිය: {"__ විධානයන්": {"# n #": "දිනය වේලාව.දැන්"}, "වලීඩේට්": "# n #"} ... එය YAML ලෙස පෙනේ එහෙනම් ඉදිරි මාවත ...
intrepidis

73
පුද්ගලික මතය: අදහස් දැක්වීමට ඉඩ නොදීම කොරයි. මගේ වින්‍යාස ගොනු විකේතනය කිරීම සඳහා අදහස් නොසලකා හරින සම්මත නොවන JSON විග්‍රහයක් තැනීම හැර මට වෙනත් විකල්පයක් නොතිබුණි.
caiosm1005

17
RArturCzajka JSON අදහස් දැක්වීම් වලට සහය නොදක්වන කාරණයට මම තවමත් අකමැතියි, නමුත් මම INI උත්සාහ කර බැලුවෙමි. ඒවා වින්‍යාස ගොනු සඳහා JSON හරහා භාවිතා කිරීම වඩා අර්ථවත් බව මම පිළිගත යුතුය. ප්‍රතිචාරයට ස්තූතියි, මෙම සංවාදය කියවන විට වැඩි පිරිසක් ඔවුන්ගේ අදහස් වෙනස් කරනු ඇතැයි බලාපොරොත්තු වෙමු. (කෙසේ වෙතත් විග්‍රහ කරන්නෙකු සෑදීම ව්‍යායාමයක් විය :)
caiosm1005

77
සමහර අයට බයිසිකල් පැදීමට නොහැකි නිසා එය සියලු බයිසිකල්වලට පුහුණු රෝද අවශ්‍ය වේ. මෝඩ මිනිසුන් අපයෝජනය කරන නිසා වැදගත් අංගයක් ඉවත් කිරීම නරක සැලසුමකි. දත්ත ආකෘතියක් මෝඩ-සාධනය වීමට වඩා භාවිතයට ප්‍රමුඛතාවය දිය යුතුය.
ෆිල් ගොට්ස්

205

වියාචනය: ඔබේ වගකීම් අවලංගුය

පෙන්වා දී ඇති පරිදි, මෙම කඩුල්ල පිරිවිතර ක්‍රියාත්මක කිරීමේ වාසිය ලබා ගනී. සියලුම JSON විග්‍රහ කරන්නන් මේ ආකාරයේ JSON තේරුම් නොගනී. විග්‍රහ කරන්නන් විකාශනය කිරීම හුස්ම හිර කරයි.

එය සිත්ගන්නාසුලු කුතුහලයකි, නමුත් ඔබ එය කිසිසේත් කිසිවක් සඳහා භාවිතා නොකළ යුතුය . පහත දැක්වෙන්නේ මුල් පිළිතුරයි.


JSON ගොනුවක විග්‍රහ කිරීමට බලපාන හෝ වෙනත් ආකාරයකින් නිරූපණය වන දත්ත වෙනස් කිරීමට ඔබට ඉඩ සලසන කුඩා හැක් එකක් මම සොයාගෙන ඇත.

වස්තුවක් වචනානුසාරයෙන් ප්‍රකාශ කිරීමේදී ඔබට එකම යතුරකින් අගයන් දෙකක් නියම කළ හැකි බව පෙනේ, අන්තිම එක ප්‍රමුඛස්ථානය ගනී. එය විශ්වාස කරන්න හෝ නොවන්න, JSON විග්‍රහ කරන්නන් එකම ආකාරයකින් ක්‍රියා කරන බව පෙනේ. එබැවින් අපට මෙය භාවිතා කළ හැක්කේ JSON ප්‍රභවයේ විග්‍රහ කළ වස්තු නිරූපණයක නොපවතින අදහස් නිර්මාණය කිරීමට ය.

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

අපි මෙම තාක්ෂණය භාවිතා කරන්නේ නම්, ඔබ අදහස් දැක්වූ JSON ගොනුව මේ වගේ විය හැකිය:

{
  "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]
}

ඉහත කේතය වලංගු JSON වේ. ඔබ එය විග්‍රහ කරන්නේ නම්, ඔබට මෙවැනි වස්තුවක් ලැබෙනු ඇත:

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

එයින් අදහස් කරන්නේ අදහස් දැක්වීමේ කිසිදු හෝඩුවාවක් නොමැති අතර ඒවාට අමුතු අතුරු ආබාධ ඇති නොවන බවයි.

සුබ අනවසරයෙන් ඇතුළුවීම!


150
සිට පිරිවිතර : වස්තුවක් තුළ නම් අනන්ය විය යුතුය.
ක්වෙන්ටින්

113
"සියලු ක්‍රියාත්මක කිරීම් එය එක හා සමානව හසුරුවයි" - එය ඔප්පු කිරීමට අපහසු දෙයකි.
ක්වෙන්ටින්

91
JSON හි මූලද්‍රව්‍ය අනුපිළිවෙල සහතික නොවේ. ඒ කියන්නේ "අන්තිම" අයිතමය වෙනස් විය හැකිය!
sep332

66
මෙය පැහැදිලිවම පිරිවිතර උල්ලං lates නය කරයි (ඉහත අදහස් බලන්න), මෙය නොකරන්න. ietf.org/rfc/rfc4627.txt?number=4627
voidlogic

334
නැත - විග්‍රහකය ප්‍රවාහය කරන්නේ නම් කුමක් කළ යුතුද? යතුරු ඇණවුම නිර්වචනය කර නොමැති ශබ්දකෝෂයකට පාර්සර් එය කියවන්නේ නම් කුමක් කළ යුතුද? මෙය ගින්නෙන් මරන්න .
deanWombourne

184

JSON අදහස් දැක්වීම් සඳහා සහය නොදක්වයි. අදහස් දැක්වීමට අවශ්‍ය වන වින්‍යාස ගොනු සඳහා එය කිසි විටෙකත් භාවිතා කිරීමට අදහස් නොකළේය.

Hjson යනු මිනිසුන් සඳහා වින්‍යාස ගොනු ආකෘතියකි. ලිහිල් කරන ලද වාක්‍ය ඛණ්ඩය, අඩු වැරදි, වැඩි අදහස්.

Hjson හැඳින්වීම

JavaScript, Java, Python, PHP, Rust, Go, Ruby සහ C # පුස්තකාල සඳහා hjson.org බලන්න .


13
ඉහළට. එය පැහැදිලිවම හොඳ විචලනයකි, විවෘත ගතානුගතික පුද්ගලයින් වෛර කිරීමට කැමති වනු ඇත. ඔබේ ක්‍රියාත්මක කිරීම තව දුරටත් දැන ගනු ඇතැයි මම බලාපොරොත්තු වෙමි - සමහර විට මුල් පිටපතට වඩා ජනප්‍රිය වනු ඇත;) යමෙකු එය රූබි සමඟ ද ක්‍රියාත්මක කිරීමට බලාපොරොත්තු වේ. eladelphus භාෂාව මනාව නිර්වචනය කර ඇත්තේ ඔබේ ඉදිරිදර්ශනය හෝ මතයයි. ඔබ සම්ප්‍රදායික "සංවර්ධකයෙකු" වීම ඔබ වඩා හොඳ බව ඔප්පු නොකරන අතර ඔබ සීමිත අවකාශයක සිරවී සිටීම ඊටත් වඩා නරක විය හැකිය. මිනිසුන්ව දරුණු සංවර්ධකයින් ලෙස පහසුවෙන් විනිශ්චය නොකරන්න.
konsolebox

7
ඒ ගැන කණගාටුයි, onkonsolebox. Ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf කියවීමෙන් පසු ඔබේ “මනාව නිර්වචනය කර ඇති JSON ඔබේ මතය” නැවත සලකා බැලීමට ඉඩ ඇත. ඛණ්ඩනය වීමට, ව්‍යාකූලත්වයට හා කාලය නාස්ති කිරීමට හේතු වේ. එක් එක් බ්‍රව්සරය තරමක් වෙනස් ප්‍රමිතීන් ක්‍රියාත්මක කරන නිසා කේත ලිවීමේදී වෙබ් සංවර්ධකයින්ට ඉතිරිව ඇති අවුල් ජාලයන් දෙස බලන්න. JSON භාෂාව පරිපූර්ණ නොවිය හැකි නමුත් ඛණ්ඩනය වඩාත් නරක ය. ඔව්, එය මතයක් පමණක් වන අතර ඔබට එකඟ නොවීමට නිදහස තිබේ.
ඇඩෙල්ෆස්

22
මම ඔබේ උපකල්පනය අගය කරමි, නමුත් ඔබ යම් යම් යෑම් නැවත ප්‍රතිනිර්මාණය කරයි. ඔබට බොහෝ නම්යශීලීභාවය සහ මිනිස් කියවීමේ හැකියාව අවශ්‍ය නම්, YAML භාවිතා කරන්න (ඇත්ත වශයෙන්ම එපා: stackoverflow.com/questions/450399/… ) හෝ ව්‍යාකූල , නමුත් නිසැක JSON සමඟ රැඳී සිටින්න.
මෙවලම් බෙයාර්

4
වඩාත්ම පරිශීලක-හිතකාමී වින්‍යාස ආකෘතිය තවමත් INI බව මට පෙනේ. එය සරල හා ඉතා සින්ටැක්ස් බර නොවේ. වින්‍යාස පොකුණෙහි ඇඟිලි තුඩු ගසන පරිශීලකයින්ට මෙය බිය ගැන්වීම අඩු කරයි.
මතෙ

14
ඔබට json වින්‍යාසයක් ලෙස අවශ්‍ය වූ විට (අදහස් දැක්විය යුතු තැන) - ඔබේ ගොනුවට ".json" වෙනුවට ".js" ලෙස නම් කරන්න .. js හට ඇත්ත වශයෙන්ම ඕනෑම වලංගු json වස්තුවක් හැසිරවිය හැකි අතර ඊට අමතරව අදහස් හැසිරවිය හැකිය .. එය එසේ වීමට හේතුව එයයි "webpack.config.js" මිස "webpack.config.json" නොවේ (වෙබ් පැක් තුළද එයට තවත් බොහෝ හේතු තිබේ: P)
jebbie

122

YAML භාවිතා කිරීම සලකා බලන්න. එය JSON හි සුපර්සෙට් එකකට ආසන්නය (සියලුම වලංගු JSON වලංගු YAML වේ) සහ එය අදහස් දැක්වීමට ඉඩ දෙයි.


12
33 g33kz0r නිවැරදියි, එබැවින් YAML පිළිබඳ මගේ විස්තරය JSON හි සුපර්සෙට් එකක් ලෙස.
මාර්නන් ලයිබෝ-කොසර්

12
AteNateS පිළිතුර නැතැයි බොහෝ අය දැනටමත් පෙන්වා දී තිබුණි. OP හි ඉලක්කය සපුරා ගැනීම සඳහා වඩා හොඳ ක්‍රමයක් මම යෝජනා කළෙමි. එය පිළිතුරකි.
මාර්නන් ලයිබෝ-කොසර්

5
අවාසිය: yamlපුස්තකාලය පයිතන් සමඟ නැව්ගත නොකෙරේ.
ලේ ගැලීමේ ඇඟිලි

6
@ marnen-laibow-koser: ඔව්, ජාවා සහ පර්ල් සඳහා පවතින YAML පුස්තකාල භාවිතා කිරීමට අපොහොසත් වී තිබිය යුතු අතර, එක් එක් නිෂ්පාදිත YAML දෝෂයකින් තොරව අනෙකා විසින් පරිභෝජනය කරනු ඇතැයි අපේක්ෂා කළ යුතුය. YAML අන්තර් ක්‍රියාකාරීත්වය ගැටලුවක් වූ නමුත් JSON ඉන්ටර්පෝප් නොවේ, මගේ දැනුම නොමැතිකම මුළුමනින්ම පැහැදිලි කරයි.
මෙවලම් බෙයාර්

3
@ marnen-laibow-koser, සරල පිරිවිතරයකින් එකම දේ ඉටු කරන ආකෘතියක් වඩා හොඳය. පරිපූර්ණ ක්‍රියාත්මක කිරීම් සහිත ප්‍රායෝගික ආකෘතියක් අසම්පූර්ණ ක්‍රියාත්මක කිරීම් සහිත පරිපූර්ණ ආකෘතියකට වඩා හොඳය. වැරදි ලිබ්ස් සඳහා වන සියලු දෝෂයන් ක්‍රියාත්මක කරන්නන්ගේ උරහිස් මත පැටවෙන්නේ නැත; YAML පිරිවිතර දිගු, ense න සහ නිරවුල් ය. එහි විකිපීඩියා ප්‍රවේශය අවිනිශ්චිතතාවයන් සඳහා උදාහරණ දෙකක් දක්වයි; අපැහැදිලි දේවලින් ආරක්ෂා කර ගැනීම සඳහා යමෙකු මිනිසෙකු සහ ආකෘතිය අතර විමෝචකයක් තැබිය යුතු නම්, එම ආකෘතියට එහි මානව හිතකාමී ප්‍රකාශය අහිමි වේ. JSON අඩු හිමිකම් පෑමක් කරන අතර බොහෝ දුරට සාර්ථක වන්නේ YAML වැඩි හිමිකම් පෑමක් හා කෙටි වීමක් ඇති තැනයි.
මෙවලම් බෙයාර්

108

ඔබට බැහැ. අවම වශයෙන් එය json.org හි ඉක්මන් බැල්මකින් මගේ අත්දැකීමයි .

JSON එහි සින්ටැක්ස් එම පිටුවේ දෘශ්‍යමාන කර ඇත. අදහස් දැක්වීම පිළිබඳ සටහනක් නොමැත.


67

සමහර පාර්සර්ස් සී ++ විලාසිතාවේ අදහස් දැක්වීම් සඳහා සහය දැක්වුවද අදහස් නිල ප්‍රමිතියක් නොවේ. මම භාවිතා කරන එකක් වන්නේ JsonCpp ය . උදාහරණ වල මෙය තිබේ:

// 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 මෙය වලංගු නොවේ. එබැවින් අදහස් දැක්වීම විග්‍රහ කරන විශේෂිත දිගුවක් මිස සම්මත නොවේ.

තවත් විග්‍රහයක් වන්නේ JSON5 ය .

JSON TOML සඳහා විකල්පයක් .

තවත් විකල්පයක් වන්නේ jsonc ය .


ග්‍රූවි හට JSON හැසිරවීම සඳහා සමහර පන්ති තිබේ . JsonSlurper හට අදහස් හැසිරවිය හැකිය. ඇත්ත වශයෙන්ම, නිල පිරිවිතරයේ අදහස් දැක්වීමට ඉඩ නොදේ, එබැවින් ඕනෑම විග්‍රහයක මෙම හැසිරීම සම්මත නොවන සහ අතේ ගෙන යා නොහැකි ය.
izrik

නිව්ටන්සොෆ්ට් Json.NET ද කිසිදු ගැටළුවක් නොමැතිව C- විලාසිතාවේ අදහස් දැක්වීම් සඳහා සහය දක්වයි
මැක්ස්

66

ඒ වෙනුවට ඔබ JSON යෝජනා ක්‍රමයක් ලිවිය යුතුය . JSON ක්‍රමාංකය දැනට යෝජිත අන්තර්ජාල කෙටුම්පත් පිරිවිතරයකි. ප්‍රලේඛනයට අමතරව, ඔබේ JSON දත්ත වලංගු කිරීම සඳහා ද ක්‍රමාංකය භාවිතා කළ හැකිය.

උදාහරණයක්:

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

විස්තර ක්‍රමලේඛය භාවිතා කිරීමෙන් ඔබට ප්‍රලේඛන සැපයිය හැකිය .


5
JSON යෝජනා ක්‍රමය ජීවමානද? එය පවතින නමුත් දන්නා ඕනෑම පුස්තකාලයකින් එයට සහාය ලැබේද?
මුන්හිට්සු

1
ඔව්, json-schema ගූගල් කණ්ඩායම තරමක් ක්‍රියාකාරී වන අතර JSON Schema validator හි හොඳ ජාවාස්ක්‍රිප්ට් ක්‍රියාත්මක කිරීම සඳහා මම JSV නිර්දේශ කරමි .
රැෆල්

5
මෙය උපකාරී වන්නේ තාවකාලික ලියකියවිලි නොව ව්‍යුහාත්මක ලියකියවිලි සඳහා පමණි
ජුවාන් මෙන්ඩිස්

ඔබ clojure භාවිතා කරන්නේ නම් (සහ ඔබ එසේ නොකරන බව මට විශ්වාසයි) මෙහි සාධාරණ මූලාශ්‍රයක් සහිත JSON schema parser එකක් තිබේ: github.com/bigmlcom/closchema
charleslparker

Un මුන්හිට්සු මැනටී.ජේසන් (.නෙට්) JSON යෝජනා ක්‍රමයට පුළුල් ලෙස සහාය දක්වයි.
ග්‍රෙග්ස්ඩෙනිස්

64

ඔබ ඔබේ JSON විග්‍රහකය ලෙස ජැක්සන් භාවිතා කරන්නේ නම් අදහස් දැක්වීමට ඉඩ දීමට ඔබ එය සක්‍රීය කරන්නේ එලෙසයි:

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

එවිට ඔබට මෙවැනි අදහස් දැක්විය හැකිය:

{
  key: "value" // Comment
}

#සැකසීමෙන් ආරම්භ වන අදහස් ද ඔබට තිබිය හැකිය :

mapper.configure(Feature.ALLOW_YAML_COMMENTS, true);

නමුත් පොදුවේ (පෙර පිළිතුරු දුන් පරිදි) පිරිවිතරයන්ට අදහස් දැක්වීමට ඉඩ නොදේ.


50

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"
}

FYI, Firebase Realtime දත්ත සමුදාය යතුරක '/' භාවිතා කිරීමට ඉඩ නොදේ. එබැවින් මෙය ඔබගේ භාවිතය සඳහා කදිම සම්මුතියක් විය හැකිය, නමුත් ඔබට එය ෆයර්බේස් හි කළ නොහැක
gutte

5
මෙම ක්‍රමය සමහර පුස්තකාල බිඳ දමයි, එමඟින් යතුර අද්විතීය විය යුතුය. අදහස් දැක්වීමෙන් මම එම ගැටලුව විසඳා ගනිමි.
MovGP0

හොඳ අදහස්, මම එසේ මත මෙම ප්රශ්නය සොයා ... මෙම කොටස පිරිවිතර මගින් ආවරණය කළ යුතු නොවේ පෙනේ stackoverflow.com/questions/21832701/...
මානා

4
මම මේ දිනවල එය මේ ආකාරයට භාවිතා කිරීමට නැඹුරු වෙමි: fo "// foo": "foo comment", "foo": "foo value", "// bar": "bar comment", "bar": "bar value"} ඔබට විවිධ අදහස් සඳහා අරාවක් භාවිතා කළ හැකිය: {"// foo": ["foo comment 1", "foo comment 2"], "foo": '' foo value "
Mov

47

නැත . JSON අදහස් දැක්වීම් සඳහා සහාය දැක්වීමට භාවිතා කළ නමුත් ඒවා අපයෝජනයට ලක් කර සම්මතයෙන් ඉවත් කරන ලදි.

JSON හි නිර්මාතෘ වෙතින්:

මම JSON වෙතින් අදහස් ඉවත් කළේ මිනිසුන් විග්‍රහ කිරීමේ විධානයන් භාවිතා කරන බව දුටු නිසාය. අදහස් දැක්වීම් නොමැතිකම සමහර අයට දුකක් බව මම දනිමි, නමුත් එය එසේ නොවිය යුතුය. - ඩග්ලස් ක්‍රොක්ෆර්ඩ්, 2012

නිල JSON වෙබ් අඩවිය JSON.org හි ඇත . JSON ECMA ඉන්ටර්නැෂනල් විසින් ප්‍රමිතියක් ලෙස අර්ථ දක්වා ඇත . ප්‍රමිති සංශෝධනය කිරීම සඳහා පෙත්සම් ක්‍රියාවලියක් සෑම විටම පවතී. හේතු කිහිපයක් නිසා JSON ප්‍රමිතියට විවරණ එකතු කරනු ඇතැයි සිතිය නොහැක.

JSON by design යනු XML වලට පහසුවෙන් ආපසු හැරවිය හැකි (මානව විග්‍රහ කළ) විකල්පයකි. විවරණයන් අනවශ්‍ය යැයි පවා එය සරල කර ඇත. එය සලකුණු කිරීමේ භාෂාවක්වත් නොවේ. ඉලක්කය වන්නේ ස්ථායිතාව සහ අන්තර් ක්‍රියාකාරීත්වයයි.

වස්තු දිශානතියේ "ඇති-ඇති" සම්බන්ධතාවය තේරුම් ගන්නා ඕනෑම කෙනෙකුට ඕනෑම JSON ව්‍යුහයක් තේරුම් ගත හැකිය - එය සමස්ත කරුණයි. එය හුදෙක් විශ්වීය දත්ත ව්‍යුහයක් වන නෝඩ් ටැග් (යතුරු / අගය යුගල) සහිත සෘජු ඇසික්ලික් ප්‍රස්ථාරයක් (DAG) පමණි.

මෙම ව්‍යාඛ්‍යාව පමණක් අවශ්‍ය වන්නේ "// මේවා DAG ටැග්" ය. ප්‍රධාන නම් අවශ්‍ය තරම් තොරතුරු විය හැකි අතර අත්තනෝමතික අර්ථකථන ආරෝපණයට ඉඩ දෙයි.

ඕනෑම වේදිකාවක් සඳහා JSON කේත පේළි කිහිපයක් සමඟ විග්‍රහ කළ හැකිය. බොහෝ වේදිකාවල ශක්‍ය නොවන සංකීර්ණ OO පුස්තකාල XML සඳහා අවශ්‍ය වේ.

විවරණ මගින් JSON අඩු අන්තර්ක්‍රියාකාරිත්වයක් ඇති කරයි. ඔබට සැබවින්ම අවශ්‍ය වන්නේ සලකුණු කිරීමේ භාෂාවක් (XML) මිස, එකතු කිරීමට වෙනත් කිසිවක් නැත, ඔබේ අඛණ්ඩ දත්ත පහසුවෙන් විග්‍රහ කර ඇත්දැයි නොසලකන්න.

නමුත් JSON හි නිර්මාතෘවරයා නිරීක්ෂණය කළ පරිදි, අදහස් දැක්වීම සඳහා JS නල මාර්ග සහයෝගය සැමවිටම ඇත:

ඉදිරියට ගොස් ඔබ කැමති සියලු අදහස් ඇතුළත් කරන්න. ඔබේ JSON විග්‍රහකයාට භාර දීමට පෙර එය JSMin හරහා නල කරන්න. - ඩග්ලස් ක්‍රොක්ෆර්ඩ්, 2012


37

JSON නූලක් වන ඔබේ පෙළ ගොනුව කිසියම් වැඩසටහනකින් කියවීමට යන්නේ නම්, එය භාවිතා කිරීමට පෙර C හෝ C ++ විලාසිතාවේ අදහස් ඉවත් කිරීම කෙතරම් දුෂ්කර ද?

පිළිතුර: එය එක් ලයිනර් එකක් වනු ඇත. ඔබ එසේ කරන්නේ නම් JSON ගොනු වින්‍යාස ගොනු ලෙස භාවිතා කළ හැකිය.


1
ලිපිගොනු අන්තර් හුවමාරු ආකෘතියක් ලෙස තබා ගැනීම තවමත් ගැටලුවක් වුවද, භාවිතයට පෙර පෙර සැකසුම් අවශ්‍ය බැවින්, මෙතෙක් ලබා දී ඇති හොඳම යෝජනාව.
ඕර්බ්ලිං කිරීම

මම එකඟ වන අතර ජාවා හි JSON විග්‍රහයක් ලියා ඇත, එය www.SoftwareMonkey.org වෙතින් ලබා ගත හැකිය, එය හරියටම එය කරයි.
ලෝරන්ස් ඩොල්

2
මා සිතුවත්, JSON දීර් extend කිරීම හොඳ අදහසක් නොවේ (එය වෙනත් හුවමාරු ආකෘතියක් ලෙස හැඳින්වීමකින් තොරව): නූල් තුළ “අදහස්” නොසලකා හැරීමට වග බලා ගන්න.
fo

27
"... එක් ලයිනර් එකක් වනු ඇත" umm, නැත, ඇත්ත වශයෙන්ම, JSON යනු සාමාන්‍ය ව්‍යාකරණ නොවේ, සාමාන්‍ය ප්‍රකාශනයකට සරලවම ගැලපෙන යුගල / * සොයාගත හැකිය. නූලක් තුළ / / දර්ශණය වී ඇත්දැයි සොයා බැලීමට ගොනුව විග්‍රහ කළ යුතුය (හෝ එය නොසලකා හරින්න), හෝ එය ගැලවී ඇත්දැයි (සහ එය නොසලකා හරින්න) යනාදිය. එසේම, ඔබේ පිළිතුර උදව් නොවන්නේ ඔබ සැපයීමට වඩා සරලව අනුමාන කරන නිසා (වැරදියට) ඕනෑම විසඳුමක්.
කයිල් සිම්සන්

1
@ කයිල්-සිම්සන් කී දේ. එසේම, තාවකාලික රීජෙක්ස් සඳහා විකල්පයක් ලෙස JSON.minify භාවිතා කිරීම පිළිබඳ ඔහුගේම පිළිතුරට පා readers කයන් යොමු කිරීමට ඔහු නිහතමානී ය. ඒක කරන්න, මේක නෙවෙයි.
මෙවලම් බෙයාර්

36

ඔබ කියවීමට / ආශා කිරීමට ASP.NET සමඟ නිව්ටන්සොෆ්ට්.ජේසන් පුස්තකාලය භාවිතා කරන්නේ නම් ඔබට JSON අන්තර්ගතයේ අදහස් භාවිතා කළ හැකිය:

// "name": "string"

// "id": int

හෝ

/* මේක

අදහස් දැක්වීමේ උදාහරණය * /

PS: තනි රේඛා අදහස් දැක්වීම් සඳහා සහය දක්වන්නේ නිව්ටන්සොෆ්ට් ජේසන්ගේ 6+ අනුවාද සමඟ පමණි.

කොටුවෙන් පිටත සිතිය නොහැකි පුද්ගලයින් සඳහා අමතර සටහන: මා විසින් සාදන ලද ASP.NET වෙබ් යෙදුමක මූලික සැකසුම් සඳහා මම JSON ආකෘතිය භාවිතා කරමි. මම ගොනුව කියවා, එය නිව්ටන්සොෆ්ට් පුස්තකාලය සමඟ සැකසුම් වස්තුව බවට පරිවර්තනය කර අවශ්‍ය විටදී භාවිතා කරමි.

JSON ගොනුවේම එක් එක් සැකසුම ගැන අදහස් ලිවීමට මම කැමැත්තෙමි, මා භාවිතා කරන පුස්තකාලය ඒ සමඟ හොඳින් පවතින තාක් කල් මම JSON ආකෘතියේ අඛණ්ඩතාව ගැන තැකීමක් නොකරමි.

වෙනම 'සැකසීම්.රෙඩ්එම්' ගොනුවක් නිර්මාණය කර එහි ඇති සැකසුම් පැහැදිලි කරනවාට වඩා මෙය 'භාවිතා කිරීමට / තේරුම් ගැනීමට පහසු' ක්‍රමයක් යැයි මම සිතමි.

ඔබට මේ ආකාරයේ භාවිතය පිළිබඳ ගැටළුවක් ඇත්නම්; කණගාටුයි, ජෙනී ලාම්පුවෙන් පිටත ඇත. මිනිසුන් JSON ආකෘතිය සඳහා වෙනත් භාවිතයන් සොයා ගනු ඇත, ඒ පිළිබඳව ඔබට කළ හැකි කිසිවක් නොමැත.


යමෙකුට සත්‍යයක් පැවසීමට ගැටලුවක් ඇති වන්නේ මන්දැයි වටහා ගැනීම දුෂ්කර ය.
dvdmn

ඉහත සඳහන් දෑ තවදුරටත් JSON නොවන නිසා හෝ අවලංගු JSON නිසා යමෙකු ව්‍යතිරේකයක් ගෙන ඇතැයි මම සිතමි. සමහර විට කෙටි වියාචනයක් එකතු කිරීම සතුටු වනු ඇත.
මෙවලම් බෙයාර්

5
මම ඔබ සමඟ සම්පුර්ණයෙන්ම එකඟ වෙමි, එහෙත් පැහැදිලිව දක්වා ඇති පිළිතුරක් නොලැබීම සඳහා මේ දක්වා ඉහළ නංවාලීම් 883 ක් ඇත. ප්‍රයෝජනවත් තොරතුරු වලට වඩා ඉහළින් අගය කරන දෘෂ්ටිවාදාත්මක පාරිශුද්ධත්වය, එය ඔබට SO ය.
ජෝන්

කාරණය වන්නේ අදහස් සහිත ගොනුවක් JSON නොවන අතර බොහෝ JSON පුස්තකාල විසින් විග්‍රහ කිරීමට අසමත් වනු ඇත. ඔබේම වැඩසටහනක ඔබට අවශ්‍ය ඕනෑම දෙයක් කිරීමට නිදහස්ව සිටින්න, නමුත් අදහස් සහිත ගොනුවක් JSON නොවේ. ඔබ එය යැයි කියා ගන්නේ නම්, මිනිසුන් එය ඔවුන්ගේ භාෂාව / පුස්තකාලය සමඟ විග්‍රහ කිරීමට උත්සාහ කරන අතර එය අසාර්ථක වනු ඇත. එය XML හි කෝණ වරහන් වෙනුවට වර්ග වරහන් භාවිතා කළ හැකිදැයි විමසීම වැනි ය. ඔබට අවශ්‍ය ඕනෑම දෙයක් කළ හැකි නමුත් එය තවදුරටත් XML නොවනු ඇත.
gman

32

JSON හි අදහස වන්නේ යෙදුම් අතර සරල දත්ත හුවමාරුවක් සැපයීමයි. මේවා සාමාන්‍යයෙන් වෙබ් පාදක වන අතර භාෂාව ජාවාස්ක්‍රිප්ට් වේ.

එය ඇත්ත වශයෙන්ම එවැනි අදහස් දැක්වීමට ඉඩ නොදේ, කෙසේ වෙතත්, දත්තවල නම / අගය යුගලයක් ලෙස අදහස් දැක්වීම නිසැකවම ක්‍රියාත්මක වනු ඇත, නමුත් එම දත්ත පැහැදිලිවම විග්‍රහ කිරීමේ කේතය මගින් නොසලකා හැරීමට හෝ හැසිරවීමට අවශ්‍ය වනු ඇත.

JSON ගොනුවේ සාම්ප්‍රදායික අර්ථයෙන් අදහස් අඩංගු විය යුතුය යන අදහස නොවේ. එය දත්ත පමණක් විය යුතුය.

වැඩි විස්තර සඳහා JSON වෙබ් අඩවිය දෙස බලන්න .


17
JSON ආකෘතියට අදහස් නොමැති බව සත්‍යයකි. පුද්ගලිකව මම සිතන්නේ එය සැලකිය යුතු වැරැද්දක් - පාරදත්ත ලෙස අදහස් දැක්වීමේ හැකියාව (දත්ත නොවේ) xml සමඟ ඉතා ප්‍රයෝජනවත් දෙයකි. JSON පිරිවිතරයේ පෙර කෙටුම්පත් සංස්කරණවල අදහස් ඇතුළත් වූ නමුත් යම් හේතුවක් නිසා ඒවා අතහැර දමන ලදී. : - /
ස්ටැක්ස්මන්

4
@ ස්ටැක්ස්මන් මිනිසුන් ඒවා පාර-දත්ත ලෙස භාවිතා කිරීමට පටන් ගත් නිසා ඒවා අතහැර දැමීය. ක්‍රොක්ෆර්ඩ් පැවසුවේ එය නිර්මාණය කර ඇති දේ සඳහා ඇති ගැළපුම බිඳ දැමූ බවත්, මම එකඟ වෙමි: ඔබට පාර-දත්ත අවශ්‍ය නම් එය සත්‍ය දත්ත ලෙස ඇතුළත් නොකරන්නේ මන්ද? මේ ආකාරයෙන් විග්‍රහ කිරීම ඊටත් වඩා පහසුය.
කැමිලෝ මාටින්

6
පාර-දත්ත අයත් වන්නේ පාර-දත්ත සැකසුම් වල (උදා: HTML <meta> ටැග්) මිස අදහස් දැක්වීම් නොවේ. පාර-දත්ත සඳහා අදහස් අනිසි ලෙස භාවිතා කිරීම සත්‍ය පාර-දත්ත සැකැස්මක් නොමැති තැන භාවිතා කරන ලද හැක් එකක් පමණි.
මාර්නන් ලයිබෝ-කොසර්

එය අතහැර දැමීමට හේතුව එයයි: පාර-දත්ත ලෙස භාවිතා කරන අදහස් අන්තර් ක්‍රියාකාරිත්වය බිඳ දමයි. ඔබ ඔබේ මෙටා දත්ත JSON ලෙසද ගබඩා කළ යුතුය.
gabrous

1
මෙම පිළිතුර කලින් ලියා තිබුනද, මූලික වශයෙන් එකම දේ පවසන වඩා හොඳ ලිඛිත, ඉහළ උඩුකුරු පිළිතුරු සමඟ අතිරික්ත වේ. සෙස්ට් ලා වී.
මෙවලම් බෙයාර්

29

වින්‍යාස ගොනු සඳහා මට මෙය හමු විය. මට XML (වාචික, චිත්‍රමය, කැත, කියවීමට අපහසු) හෝ "ඉනි" ආකෘතිය (ධූරාවලියක් නැත, සැබෑ ප්‍රමිතියක් නැත) හෝ ජාවා "ගුණාංග" ආකෘතිය (.ini වැනි) භාවිතා කිරීමට මට අවශ්‍ය නැත.

JSON හට ඔවුන්ට කළ හැකි සියල්ල කළ හැකිය, නමුත් එය වාචික හා වඩා මිනිස් කියවිය හැකි ආකාරයකි - සහ විග්‍රහ කරන්නන් බොහෝ භාෂාවලින් පහසු සහ සර්වසම්පූර්ණ වේ. එය දත්ත ගසක් පමණි. නමුත් "පෙරනිමි" වින්‍යාසයන් සහ ඒ හා සමාන දෑ ලේඛනගත කිරීම බොහෝ විට අවශ්‍ය වේ. වින්‍යාස කිරීම කිසි විටෙකත් "සම්පූර්ණ ලේඛන" නොවිය යුතුය, නමුත් අවශ්‍ය විටදී මිනිසුන්ට කියවිය හැකි සුරකින ලද දත්තවල ගස්.

"#": "comment""වලංගු" JSON සඳහා කෙනෙකුට භාවිතා කළ හැකි යැයි මම සිතමි .


4
වින්‍යාස ගොනු සඳහා, මම යෝජනා කරන්නේ JSON නොව YAML ය. එය (පාහේ) JSON හි වඩා බලවත් සුපර්සෙට් එකක් වන නමුත් අදහස් ඇතුළුව වඩාත් කියවිය හැකි ඉදිකිරීම් සඳහා සහාය වේ.
මාර්නන් ලයිබෝ-කොසර්

1
json හා සසඳන විට YAML කොටුවෙන් පිටත සහය දක්වන භාෂා කීයක් තිබේද?
mmm

Am හැමිඩම් භාෂා දුසිමකට අධික සංඛ්‍යාවක් yaml: yaml.org සඳහා සහය දක්වයි - නමුත් තෙවන පාර්ශවීය පුස්තකාල යැපීමක අවශ්‍යතාවයකින් තොරව, ගොඩනගා ඇති සහය කීයක් තිබේදැයි විමසීමට ඔබ හරි ය. රූබි 1.9.2 වගේ. කවුරුහරි අන් අය ගැන දන්නවාද? පෙරනිමියෙන් json සඳහා සහය දක්වන නැව් මොනවාද?
nealmcb

5
YAML අන්තර් ක්‍රියාකාරීත්වය බොරුවකි: stackoverflow.com/questions/450399/… . වින්‍යාස ගොනු සඳහා JSON භාවිතා කිරීම ඔබේ සහජ බුද්ධිය නම්, එය අනුගමනය කරන්න.
මෙවලම් බෙයාර්

මෙය පැරණි ය, නමුත් # භාවිතා කිරීම හොඳ අදහසක් නොවන බව මම විශ්වාස කරමි. ජේසන් ජාවාස්ක්‍රිප්ට් ලිටරල් එකක වාක්‍ය ඛණ්ඩයට ආසන්නයි. ජාවාස්ක්‍රිප්ට් අදහස් 2 ක් සඳහා සහය දක්වයි: // සහ / * ... * / මම ඔබ නම් මම මේ ආකාරයේ අදහස් එකක් හෝ දෙකම සමඟ බැඳී සිටිමි.
පැස්කල් ගනේ

28

JSON ස්වදේශීය අදහස් දැක්වීම් සඳහා සහය නොදක්වයි, නමුත් ඔබට අදහස් ඉවත් කිරීමට ඔබේම විකේතකය හෝ අවම වශයෙන් පූර්ව සකසනයක් කළ හැකිය, එය ඉතා හොඳයි (ඔබ අදහස් නොසලකා හරින තාක් කල් සහ ඔබේ යෙදුම JSON දත්ත සැකසිය යුතු ආකාරය මඟ පෙන්වීමට ඒවා භාවිතා නොකරන්න. ).

JSON ට අදහස් නොමැත. JSON එන්කෝඩරයක් අදහස් දැක්වීම් නොකළ යුතුය. JSON විකේතකයක් අදහස් පිළිගෙන නොසලකා හරිනු ඇත.

අර්ථවත් කිසිවක් සම්ප්‍රේෂණය කිරීමට අදහස් කිසි විටෙකත් භාවිතා නොකළ යුතුය. JSON යනු එයයි.

Cf: ඩග්ලස් ක්‍රොක්ෆර්ඩ්, JSON පිරිවිතරයේ කර්තෘ .


4
ක්‍රොක්ෆර්ඩ් පසුව මෙසේ ලිවීය: "ඔබ විවරණය කිරීමට කැමති වින්‍යාස ලිපිගොනු තබා ගැනීමට ඔබ JSON භාවිතා කරයි යැයි සිතමු. ඉදිරියට ගොස් ඔබ කැමති සියලු අදහස් ඇතුළත් කරන්න. ඉන්පසු එය ඔබේ JSON විග්‍රහකයාට භාර දීමට පෙර JSMin හරහා නල කරන්න." වැඩි විස්තර සඳහා JSON.minify පිළිබඳ @ කයිල්-සිම්ප්සන්ගේ පිළිතුර බලන්න.
මෙවලම් බෙයාර්

28

එය ඔබගේ JSON පුස්තකාලය මත රඳා පවතී. Json.NET ජාවාස්ක්‍රිප්ට් විලාසිතාවේ අදහස් දැක්වීම් සඳහා සහය දක්වයි /* commment */.

තවත් තොග පිටාර ගැලීමේ ප්‍රශ්නයක් බලන්න .


මම මම මේ ASP.NET vNext පෙරදසුනෙහි පිටුව (package.json යටතේ) මත තිර පිටපතක් තුළ ප්රතිචාරයක් බලන්න ඒ නිසයි විශ්වාස: blogs.msdn.com/b/webdev/archive/2014/06/03/... මම ක්ෂේම භූමියක් වුවත් තවමත් පිරිවිතරයේ කිසිවක් සොයාගෙන නැත.
webXL

27

වින්‍යාස ලිපිගොනු සහ වෙනත් දේශීය භාවිතය සඳහා JSON බොහෝ අර්ථවත් කරයි, එය සර්වසම්පූර්ණ නිසා සහ එය XML වලට වඩා සරල නිසා.

දත්ත සන්නිවේදනය කිරීමේදී (වලංගු වුවත් නැතත්) JSON හි අදහස් දැක්වීමට මිනිසුන්ට ප්‍රබල හේතු තිබේ නම්, සමහර විට JSON දෙකට බෙදිය හැකිය:

  • JSON-COM: වයර් මත JSON, හෝ JSON දත්ත සන්නිවේදනය කිරීමේදී අදාළ වන නීති.
  • JSON-DOC: JSON ලේඛනය, හෝ JSON ලිපිගොනු වල හෝ දේශීයව. වලංගු JSON ලේඛනයක් අර්ථ දක්වන රීති.

JSON-DOC අදහස් දැක්වීමට ඉඩ දෙනු ඇති අතර, සුදු අවකාශය හැසිරවීම වැනි වෙනත් සුළු වෙනස්කම් තිබිය හැකිය. විග්‍රහ කරන්නන්ට එක් පිරිවිතරයකින් අනෙකට පහසුවෙන් පරිවර්තනය කළ හැකිය.

මෙම කරුණු සම්බන්ධයෙන් ඩග්ලස් ක්‍රොක්ෆර්ඩ් කළ ප්‍රකාශය සම්බන්ධයෙන් (ආටුර් සාජ්කා විසින් යොමු කරන ලදි)

ඔබ විවරණය කිරීමට කැමති වින්‍යාස ගොනු තබා ගැනීමට ඔබ JSON භාවිතා කරයි යැයි සිතමු. ඉදිරියට ගොස් ඔබ කැමති සියලු අදහස් ඇතුළත් කරන්න. ඔබේ JSON විග්‍රහකයාට භාර දීමට පෙර එය JSMin හරහා නල කරන්න.

අපි කතා කරන්නේ සාමාන්‍ය වින්‍යාස ගොනු ගැටලුවක් (හරස් භාෂාව / වේදිකාව) ගැන වන අතර, ඔහු පිළිතුරු දෙන්නේ JS විශේෂිත උපයෝගීතාවයකින්!

ඕනෑම භාෂාවක JSON විශේෂිත මිනිෆයි එකක් ක්‍රියාත්මක කළ හැකි බව සහතිකයි, නමුත් මෙය ප්‍රමිතිකරණය කරන්න, එවිට එය සියලු භාෂාවන්හි සහ වේදිකාවල විග්‍රහ කරන්නන් අතර සර්වසම්පූර්ණ බවට පත්වේ. එම නිසා විශේෂාංගය නොමැති කාලය නාස්ති කිරීම නවත්වනු ඇත. සබැඳි සංසද, සහ මිනිසුන්ට එය නරක අදහසක් යැයි පැවසීම හෝ පෙළ ලිපිගොනු වලින් අදහස් ඉවත් කිරීම ක්‍රියාත්මක කිරීම පහසු යැයි යෝජනා කිරීම.

අනෙක් කාරණය වන්නේ අන්තර් ක්‍රියාකාරිත්වයයි. ඔබට පුස්තකාලයක් හෝ ඒපීඅයි එකක් හෝ ඒ හා සම්බන්ධ යම් වින්‍යාස හෝ දත්ත ගොනු ඇති උප පද්ධතියක් ඇතැයි සිතමු. තවද මෙම උප පද්ධතියට විවිධ භාෂාවලින් ප්‍රවේශ විය යුතුය. එවිට ඔබ මිනිසුන්ට පැවසීමට යන්නේ: මාර්ගය වන විට JSON ලිපිගොනු විග්‍රහ කරන්නා වෙත යැවීමට පෙර ඒවා ඉවත් කිරීමට අමතක නොකරන්න!


JSON කැබලි කිරීමට අවශ්‍ය නැත. අදහස් සහිත JSON තවදුරටත් JSON නොවේ. නමුත් ඔබේ JSON විවරණය කිරීම හෝ සම්ප්‍රේෂණය කිරීමට පෙර ඒවා ඉවත් කිරීමට ඔබ වග බලා ගන්නා තාක් කල්, අදහස් දැක්වීමෙන් එය විවරණය කිරීම සම්පූර්ණයෙන්ම පිළිගත හැකිය. මෙය සිදු කිරීම කිසි විටෙකත් ලබන්නාගේ වගකීම නොවිය යුතුය.
මෙවලම් බෙයාර්

json5.org යනු json-doc සඳහා විසඳුමකි
මයිකල් ෆ්‍රීඩ්ජිම්

24

ඔබ JSON5 භාවිතා කරන්නේ නම් ඔබට අදහස් ඇතුළත් කළ හැකිය.


JSON5 යනු JSON වෙත යෝජිත දිගුවක් වන අතර එමඟින් මිනිසුන්ට අතින් ලිවීමට හා නඩත්තු කිරීමට පහසු වේ. එය සිදු කරන්නේ ECMAScript 5 වෙතින් සෘජුවම අවම සින්ටැක්ස් විශේෂාංග කිහිපයක් එකතු කිරීමෙනි.


5
කරුණාකර ඔබට උදාහරණයක් එකතු කළ හැකිද? එවිට ඔබට ඇත්ත වශයෙන්ම එම අමතර අක්ෂර අවශ්‍ය විය හැකිය.
dgilperez

6
සත්‍ය පිළිතුරක් සැපයීම සඳහා SO මාර්ගෝපදේශ අනුව එය අවශ්‍ය වේ. සබැඳියට පමණක් පිළිතුරු අවශ්‍ය නොවේ. ඔබට මාර්ගෝපදේශ පරීක්ෂා කළ හැකිය stackoverflow.com/help/how-to-answer
dgilperez

2
SO එහි පරිශීලකයින් විසින් පාලනය කරනු ලැබේ. ඒ කියන්නේ මාර්ගෝපදේශ අනුගමනය නොකරන්නේ නම් මට ඔබේ අදහස් දැක්විය හැකි ආකාරයටම මට පිළිතුරක් ලබා දිය හැකිය. SO විශාල සම්පතක් වන්නේ එලෙසිනි.
dgilperez

22

ඩොජෝ මෙවලම් කට්ටලය ජාවාස්ක්‍රිප්ට් මෙවලම් කට්ටලය (අවම වශයෙන් 1.4 අනුවාදය අනුව), ඔබේ JSON හි අදහස් ඇතුළත් කිරීමට ඉඩ දෙයි. අදහස් /* */ආකෘතියෙන් විය හැකිය. ඩෝජෝ මෙවලම් කට්ටලය dojo.xhrGet()ඇමතුම හරහා JSON පරිභෝජනය කරයි .

වෙනත් ජාවාස්ක්‍රිප්ට් මෙවලම් කට්ටල ඒ හා සමානව ක්‍රියා කරයි.

අවසාන විකල්පයක් තෝරා ගැනීමට පෙර විකල්ප දත්ත ව්‍යුහයන් (හෝ දත්ත ලැයිස්තු පවා) අත්හදා බැලීමේදී මෙය ප්‍රයෝජනවත් වේ.


4
නැත. JSON ට අදහස් නොමැත. ඔබේ JSON අදහස් දැක්වීම් සමඟ විවරණය කිරීමට ඔබ තෝරා ගන්නේ නම්, විග්‍රහ කිරීමට හෝ සම්ප්‍රේෂණය කිරීමට පෙර එය අවම කරන්න. මෙය ලබන්නාගේ වගකීම නොවිය යුතුය.
මෙවලම් බෙයාර්

2
මම කිව්වේ නැහැ JSON ට අදහස් තියෙනවා කියලා. ඒවා ඔබේ JSON හි, විශේෂයෙන් නිෂ්පාදන පද්ධතියකට ඇතුළත් කිරීම සුදුසු යැයි ඇඟවීමට මම අදහස් නොකළෙමි. ඩෝජෝ මෙවලම් කට්ටලය ඔබට ඒවා එකතු කිරීමට අවසර දෙන බව මම කීවෙමි , එය (හෝ අවම වශයෙන්) සත්‍ය වශයෙන්ම සත්‍යයකි. ඔබේ පරීක්ෂණ අවධියේදී එසේ කිරීම සඳහා ඉතා ප්‍රයෝජනවත් භාවිත අවස්ථා තිබේ.
ඩේවිඩ්

1
අදහස් දැක්වීම සේවය කිරීම නරක වොඩූ එකක් වන අතර එමඟින් අවලංගු JSON, dojo.xhrGet()පිළිගැනීමෙන් ව්‍යංගයෙන් ධෛර්යමත් කරයි.
මෙවලම් බෙයාර්

අදහස් දැක්වීමට ඉඩ දීම සඳහා JSON පිරිවිතර යාවත්කාලීන කිරීම සඳහා මම තවමත් ඡන්දය දෙමි. JSON සම්ප්‍රේෂණය කිරීමට පෙර අදහස් අවම කිරීම සහ ඉවත් කිරීම සඳහා මම සියල්ලම වෙමි, නමුත් ඔබේ JSON විග්‍රහ කිරීමට පෙර වෙනම උපයෝගීතාවයක් හරහා නොගෙන ඕනෑම සම්මත ආකාරයකින් අදහස් දැක්වීමේ හැකියාවක් නොමැති වීම මෝඩකමක් සේ පෙනේ. ඔබගේ ලිපිගොනු වලංගු නොවන JSON නොවන බැවින් ඔබගේ JSON වින්‍යාස ගොනු වල JSON සංස්කාරකයක් භාවිතා කිරීමටද මට නොහැකි වේ.
ක්‍රේග්

20

JSON යනු රාමුගත ප්‍රොටෝකෝලයක් නොවේ . එය භාෂා රහිත ආකෘතියකි . එබැවින් අදහස් දැක්වීමේ ආකෘතිය JSON සඳහා අර්ථ දක්වා නොමැත.

බොහෝ අය යෝජනා කර ඇති පරිදි, සමහර උපක්‍රම තිබේ, උදාහරණයක් ලෙස, අනුපිටපත් යතුරු හෝ _commentඔබට භාවිතා කළ හැකි විශේෂිත යතුරක් . එය ඔයාට බාරයි.


18

ඔබට JSONP හි අදහස් දැක්විය හැකිය , නමුත් පිරිසිදු JSON හි නොවේ. හයිචාර්ට්ස් වෙතින් මෙම උදාහරණය සමඟ මගේ වැඩසටහන ක්‍රියාත්මක කිරීමට මම පැයක් ගත කළෙමි: http://www.highcharts.com/samples/data/jsonp.php?filename=aapl-c.json&callback=?

ඔබ සබැඳිය අනුගමනය කරන්නේ නම්, ඔබට පෙනෙනු ඇත

?(/* AAPL historical OHLC data from the Google Finance API */
[
/* May 2006 */
[1147651200000,67.79],
[1147737600000,64.98],
...
[1368057600000,456.77],
[1368144000000,452.97]
]);

මගේ දේශීය ෆෝල්ඩරයේ සමාන ගොනුවක් මා සතුව ඇති බැවින්, එකම-මූල ප්‍රතිපත්තියේ කිසිදු ගැටළුවක් නොතිබූ හෙයින්, මම පිරිසිදු JSON භාවිතා කිරීමට තීරණය කළෙමි ... ඇත්ත වශයෙන්ම, $.getJSONඅදහස් දැක්වීම නිසා නිහ ly ව අසමත් විය.

අවසානයේදී මම ඉහත ලිපිනයට අත්පොත HTTP ඉල්ලීමක් යවා අන්තර්ගතයේ වර්ගය බව තේරුම් ගත් අතර text/javascriptJSONP පිරිසිදු ජාවාස්ක්‍රිප්ට් ලබා දෙයි. මෙම අවස්ථාවේදී අදහස් දැක්වීමට අවසර ඇත. නමුත් මගේ යෙදුම අන්තර්ගතයේ වර්ගය නැවත ලබා දුන් application/jsonනිසා මට අදහස් ඉවත් කිරීමට සිදු විය.


17

මෙය "ඔබට පුළුවන්ද" යන ප්‍රශ්නයයි. මෙන්න "ඔව්" පිළිතුරකි.

නැත, ඔබ JSON කේතීකරණයකට පැති නාලිකා දත්ත පිරවීම සඳහා අනුපිටපත් වස්තු සාමාජිකයින් භාවිතා නොකළ යුතුය. ( RFC හි "වස්තුවක් තුළ ඇති නම් අද්විතීය විය යුතුය" බලන්න ).

ඔව්, ඔබට විග්‍රහ කළ හැකි JSON වටා අදහස් ඇතුළත් කළ හැකිය.

නමුත් වලංගු JSON වෙත අත්තනෝමතික පැති නාලිකා දත්ත ඇතුළු කිරීමට සහ උපුටා ගැනීමට ඔබට ක්‍රමයක් අවශ්‍ය නම්, මෙන්න පිළිතුරකි. JSON කේතීකරණයේ දත්ත අද්විතීය නොවන නිරූපණයෙන් අපි ප්‍රයෝජන ගන්නෙමු. මෙම අවසර ඇත * දෙදෙනා RFC කොටසක්, "whitespace පෙර හෝ ව්යුහාත්මක සයකට ඕනෑම පසු අවසර ඇත" යටතේ.

* RFC හි සඳහන් වන්නේ “ව්‍යුහාත්මක අක්ෂර හයට පෙර හෝ පසුව සුදු අවකාශය අවසර දී ඇති” බවයි, නූල්, සංඛ්‍යා, “අසත්‍ය”, “සත්‍ය” සහ “ශුන්‍ය” යන්න පැහැදිලිව සඳහන් නොකරයි. සියලුම ක්‍රියාවට නැංවීමේදී මෙම අතපසු කිරීම නොසලකා හරිනු ලැබේ.


පළමුව, ඔබේ JSON අවම කිරීමෙන් කැනොනිකල් කරන්න:

$jsonMin = json_encode(json_decode($json));

ඉන්පසු ඔබේ අදහස ද්විමය වශයෙන් කේතනය කරන්න:

$hex = unpack('H*', $comment);
$commentBinary = base_convert($hex[1], 16, 2);

ඉන්පසු ඔබේ ද්විමය පියවර:

$steg = str_replace('0', ' ', $commentBinary);
$steg = str_replace('1', "\t", $steg);

මෙන්න ඔබේ ප්‍රතිදානය:

$jsonWithComment = $steg . $jsonMin;

1
RFC හි සඳහන් වන්නේ “ව්‍යුහාත්මක අක්ෂර හයකට පෙර හෝ පසුව සුදු අවකාශය අවසර දී ඇති” බවයි, නූල්, සංඛ්‍යා, “අසත්‍ය”, “සත්‍ය”, “ශුන්‍ය” යන්න පැහැදිලිව සඳහන් නොකරයි. සියලුම ක්‍රියාවට නැංවීමේදී මෙම අතපසු කිරීම නොසලකා හරිනු ලැබේ.
විලියම් එන්ට්‍රිකන්

1
වැඩි විවරණ dens නත්වයක් සඳහා, ඔබේ අදහස ත්‍රිත්වයේ කේතනය කර එය අවහිර කිරීමට අවකාශය, ටැබ් සහ නව රේඛාව භාවිතා කළ නොහැකිද?
ක්ලෙයාර් නීල්සන්

තිබිය යුතු නොවේ. පැහැදිලිව ඇතුළත් කර ඇති RFC 2119 බලන්න: MUST: මෙම වචනය හෝ "අවශ්‍ය" හෝ "SHALL" යන වචන වලින් අදහස් වන්නේ අර්ථ දැක්වීම පිරිවිතරයේ නිරපේක්ෂ අවශ්‍යතාවයක් බවයි. ... කළ යුතුය: මෙම වචනය, හෝ "නිර්දේශිත" යන නාමයෙන් අදහස් කරන්නේ කිසියම් අයිතමයක් නොසලකා හැරීමට නිශ්චිත තත්වයන් තුළ වලංගු හේතු තිබිය හැකි නමුත් වෙනත් පා .මාලාවක් තෝරා ගැනීමට පෙර සම්පූර්ණ ඇඟවුම් තේරුම් ගෙන පරෙස්සමින් කිරා මැන බැලිය යුතුය.
ජෙෆ් කේ

හොඳ සඳහනක්. අනුපිටපත් යතුරු භාවිතා කිරීමට වඩා හොඳ තර්කයක් වන්නේ සම්මතයේ උපුටා දැක්වීමයි "වස්තුවක් තුළ ඇති නම් අද්විතීය නොවන විට, එවැනි වස්තුවක් ලැබෙන මෘදුකාංගවල හැසිරීම අනපේක්ෂිත ය." ප්‍රමිතිය "අද්විතීය නොවිය යුත්තේ" ඇයිද යන්න දැන් මට වැටහී ඇත, මෙය වලංගු කරන්නෙකු සරල කරයි, එය ලුහුබැඳීමට පමණක් අවශ්‍ය වේ [සහ {, එය දැනටමත් භාවිතා කර ඇති යතුරු මොනවාදැයි දැන ගැනීමට අවශ්‍ය නොවේ.
විලියම් එන්ට්‍රිකන්

16

වියාචනය: මෙය මෝඩය

අදහස් එකතු කිරීමට ඇත්ත වශයෙන්ම ක්‍රමයක් ඇත, සහ පිරිවිතරයේ රැඳී සිටින්න (අමතර විග්‍රහයක් අවශ්‍ය නොවේ). එය කිසිදු ආකාරයක විග්‍රහයකින් තොරව මිනිසුන්ට කියවිය හැකි අදහස් දැක්වීමට හේතු නොවේ.

ඔබට පහත සඳහන් දෑ අනිසි ලෙස භාවිතා කළ හැකිය:

කිසියම් ටෝකනයකට පෙර හෝ පසුව වැදගත් නොවන හිස් අවකාශයට අවසර දෙනු ලැබේ. වයිට්ස්පේස් යනු පහත දැක්වෙන කේත ලක්ෂ්‍යයන්ගෙන් එකක් හෝ වැඩි ගණනක අනුක්‍රමයකි: අක්ෂර වගුව (U + 0009), රේඛීය සංග්‍රහය (U + 000A), ප්‍රවාහනය ආපසු (U + 000D) සහ අවකාශය (U + 0020).

විකාර ආකාරයකින්, අදහස් දැක්වීමක් එක් කිරීමට ඔබට මෙය අනිසි ලෙස භාවිතා කළ හැකිය. උදාහරණයක් ලෙස: ඔබේ අදහස ටැබ් එකකින් ආරම්භ කර අවසන් කරන්න. විවරණය base3 හි කේතනය කර අනෙක් සුදු පැහැති අක්ෂර භාවිතා කර ඒවා නියෝජනය කරන්න. උදාහරණයක් වශයෙන්.

010212 010202 011000 011000 011010 001012 010122 010121 011021 010202 001012 011022 010212 011020 010202 010202

( hello base threeASCII හි) නමුත් 0 භාවිතා කරන අවකාශය වෙනුවට, 1 භාවිතා කිරීම සඳහා පේළි සංග්‍රහය සහ 2 භාවිතය සඳහා කරත්ත ආපසු යැවීම.

මෙය ඔබට කියවිය නොහැකි සුදු අවකාශයක් ඉතිරි කරයි (ඔබ මැස්ස මත කේතනය කිරීමට / විකේතනය කිරීමට IDE ප්ලගිනයක් සාදන්නේ නැත්නම්).

පැහැදිලි හේතු නිසා මම කවදාවත් මෙය අත්හදා බැලුවේ නැත.


12

අපි strip-json-commentsඅපේ ව්‍යාපෘතිය සඳහා භාවිතා කරනවා. එය මෙවැනි දෙයකට සහය දක්වයි:

/*
 * Description 
*/
{
    // rainbows
    "unicorn": /* ❤ */ "cake"
}

npm install --save strip-json-commentsඑය ස්ථාපනය කර භාවිතා කිරීමට සරලවම :

var strip_json_comments = require('strip-json-comments')
var json = '{/*rainbows*/"unicorn":"cake"}';
JSON.parse(strip_json_comments(json));
//=> {unicorn: 'cake'}

jsonමෙම හිමිකාර අදහස් ඇතුළත් වන විට එය වලංගු JSON නොවන බව සලකන්න .
රෝයි ප්‍රින්ස්

12

මගේ නඩුවේදී, JSON ව්‍යුහයේ ප්‍රතිදානයට පෙර, නිදොස් කිරීමේ අරමුණු සඳහා මට අදහස් දැක්වීම් අවශ්‍ය වේ. එබැවින් සේවාදායකයා බිඳ දැමීම වළක්වා ගැනීම සඳහා HTTP ශීර්ෂයේ නිදොස් කිරීමේ තොරතුරු භාවිතා කිරීමට මම තීරණය කළෙමි:

header("My-Json-Comment: Yes, I know it's a workaround ;-) ");

රූප විස්තරය මෙහි ඇතුළත් කරන්න


12

JSON අදහස් දැක්වීමට ඉඩ නොදේ. මෙම තර්ක ඔබ JSON භාවිතා කළ හැකි නිසා, අතිශයින් ම මෝඩකමක් මුලුමනින් ම තර්ක obviates වන අදහස් නිර්මාණය කිරීමට, සහ සඳහා පැටවුම් හොඳ නැත සඳහා ව්යාකරණ විග්රහ දත්ත අවකාශය සියලු දී හරියටම එකම ප්රතිඵලය සහ අනාගත ගැටලු, එවැනි ඔවුන්: a JSON අදහස් දැක්වීම් සහිතව ගොනු කරන්න.

ඔබ (භාවිතා අදහස් දමා උත්සාහ කරන්නේ නම් //හෝ /* */හෝ #උදාහරණයක්), සමහර parsers මෙම දැඩිව JSON පිරිවිතර තුළ නැති නිසා අසාර්ථක වනු ඇත. එබැවින් ඔබ කිසි විටෙකත් එසේ නොකළ යුතුය .

මෙන්න උදාහරණයක් ලෙස, මගේ රූප හැසිරවීමේ පද්ධතිය මඟින් රූප අංක සහ ඒවා සම්බන්ධ මූලික ආකෘති (අදහස්) තොරතුරු (පහළ) සුරකින ලදි:

{
    "Notations": [
        {
            "anchorX": 333,
            "anchorY": 265,
            "areaMode": "Ellipse",
            "extentX": 356,
            "extentY": 294,
            "opacity": 0.5,
            "text": "Elliptical area on top",
            "textX": 333,
            "textY": 265,
            "title": "Notation 1"
        },
        {
            "anchorX": 87,
            "anchorY": 385,
            "areaMode": "Rectangle",
            "extentX": 109,
            "extentY": 412,
            "opacity": 0.5,
            "text": "Rect area\non bottom",
            "textX": 98,
            "textY": 385,
            "title": "Notation 2"
        },
        {
            "anchorX": 69,
            "anchorY": 104,
            "areaMode": "Polygon",
            "extentX": 102,
            "extentY": 136,
            "opacity": 0.5,
            "pointList": [
                {
                    "i": 0,
                    "x": 83,
                    "y": 104
                },
                {
                    "i": 1,
                    "x": 69,
                    "y": 136
                },
                {
                    "i": 2,
                    "x": 102,
                    "y": 132
                },
                {
                    "i": 3,
                    "x": 83,
                    "y": 104
                }
            ],
            "text": "Simple polygon",
            "textX": 85,
            "textY": 104,
            "title": "Notation 3"
        }
    ],
    "imageXW": 512,
    "imageYW": 512,
    "imageName": "lena_std.ato",
    "tinyDocs": {
        "c01": "JSON image notation data:",
        "c02": "-------------------------",
        "c03": "",
        "c04": "This data contains image notations and related area",
        "c05": "selection information that provides a means for an",
        "c06": "image gallery to display notations with elliptical,",
        "c07": "rectangular, polygonal or freehand area indications",
        "c08": "over an image displayed to a gallery visitor.",
        "c09": "",
        "c10": "X and Y positions are all in image space. The image",
        "c11": "resolution is given as imageXW and imageYW, which",
        "c12": "you use to scale the notation areas to their proper",
        "c13": "locations and sizes for your display of the image,",
        "c14": "regardless of scale.",
        "c15": "",
        "c16": "For Ellipses, anchor is the  center of the ellipse,",
        "c17": "and the extents are the X and Y radii respectively.",
        "c18": "",
        "c19": "For Rectangles, the anchor is the top left and the",
        "c20": "extents are the bottom right.",
        "c21": "",
        "c22": "For Freehand and Polygon area modes, the pointList",
        "c23": "contains a series of numbered XY points. If the area",
        "c24": "is closed, the last point will be the same as the",
        "c25": "first, so all you have to be concerned with is drawing",
        "c26": "lines between the points in the list. Anchor and extent",
        "c27": "are set to the top left and bottom right of the indicated",
        "c28": "region, and can be used as a simplistic rectangular",
        "c29": "detect for the mouse hover position over these types",
        "c30": "of areas.",
        "c31": "",
        "c32": "The textx and texty positions provide basic positioning",
        "c33": "information to help you locate the text information",
        "c34": "in a reasonable location associated with the area",
        "c35": "indication.",
        "c36": "",
        "c37": "Opacity is a value between 0 and 1, where .5 represents",
        "c38": "a 50% opaque backdrop and 1.0 represents a fully opaque",
        "c39": "backdrop. Recommendation is that regions be drawn",
        "c40": "only if the user hovers the pointer over the image,",
        "c41": "and that the text associated with the regions be drawn",
        "c42": "only if the user hovers the pointer over the indicated",
        "c43": "region."
    }
}

"තර්ක කිරීමේ" සබැඳිය කැඩී ඇත. එයට වර්තමාන සබැඳියක් සොයා ගැනීමට අවස්ථාවක් තිබේද?
දොන් හැච්

ඩොන්, අවාසනාවකට මෙන්, ගූගල් විසින් එම ලිපිය අඩංගු සමාජ මාධ්‍ය පද්ධතිය විනාශ කර ඇත; මුල් පෝස්ටරය එතැනින් ගියේ කොතැනට දැයි මට අදහසක් නැත. අපැහැදිලි බව ඉවත් කිරීම සඳහා ඉහත තොරතුරු වල ඇති සබැඳිය මම මරා දමමි. ස්තූතියි.
fyngyrz

තර්ක කිරීම මෝඩකමක් නොවන අතර ඔබ එය ඔප්පු කළා. ටැග් ලෙස අදහස් ක්‍රියාත්මක කිරීම අන්තර් ක්‍රියාකාරිත්වය ආරක්ෂා කරයි. මේ හරියටම Crockford අදහස් ටැග් ලෙස විග්රහ කිරීමට අවශ්ය ඇයි. දැන් සෑම දෙයක්ම ටැගයක් පමණක් වන අතර එය එකම ආකාරයකින් විග්‍රහ කර ඇත.
ඩොමිනික් සෙරිසානෝ

පිරිවිතරයේ සඳහන් වන්නේ “# සමඟ ආරම්භ වන පේළියක් අදහස් දැක්වීමක්” නම්, එය සම්පූර්ණයෙන්ම අන්තර්ක්‍රියාකාරී වනු ඇත . එය පවතින ආකාරයට, අදහස් දෙකම විග්‍රහ කිරීමට ඉඩ නොදෙන අතර ඒවා විවරණ ලෙස වටහා ගැනීමට වඩා වලංගු විග්‍රහ කරන ලද අයිතම වන අතර ඒවා පවතින සෑම .json ගොනුවකටම වෙනස් විය හැකිය. (නිදසුනක් ලෙස) පිරිවිතර “# වලින් ආරම්භ වන රේඛා අදහස්” යැයි පැවසුවද, විග්‍රහ කරන්නන්ට එම රේඛා විග්‍රහ නොකර (වේගයෙන්) මඟ හැරිය හැකි අතර විග්‍රහ කරන්නාගේ ඉඩ පැටවීම නොකෙරේ (වඩා හොඳ මතක භාවිතය.) හිඟයෙන් කිසිදු ප්‍රතිලාභයක් නොමැත .json හි අදහස් දැක්වීම, අවාසි පමණි.
fyngyrz

11

JSON අයිතමයක් කොටස් වලට කැපීම සඳහා මම "ව්‍යාජ අදහස්" පේළි එකතු කරමි:

{

"#############################" : "Part1",

"data1"             : "value1",
"data2"             : "value2",

"#############################" : "Part2",

"data4"             : "value3",
"data3"             : "value4"

}

15
ඔබ JSON හි INI ගොනු ව්‍යුහයක් අනුකරණය කර ඇත. කරුණාකර, ඔබේ ගෝල්ඩන් මිටිය දමන්න.
අර්තූර් චජ්කා

4
RFC පවසන්නේ “වස්තුවක් තුළ ඇති නම් අද්විතීය විය යුතු” බවයි. ඉහත පරිදි JSON විග්‍රහ කිරීමේදී දෝෂයක් ඇති මෙම පුද්ගලයාද බලන්න: stackoverflow.com/questions/4912386/…
විලියම් එන්ට්‍රිකන්

ඔබ JSON වලංගු කිරීම සඳහා ක්‍රමවේදයක් භාවිතා කරන්නේ නම්, අමතර ක්ෂේත්‍ර හේතුවෙන් එය අසාර්ථක විය හැකිය.
ග්‍රෙග්ස්ඩෙනිස්

1
ඔබගේ JSON වෙත අදහස් එක් කිරීමට ඔබ සැබවින්ම අධිෂ් If ාන කරගෙන සිටී නම්, මේ වගේ දෙයක් කිරීම වඩාත් අර්ථවත් වනු ඇත: { "comment-001":"This is where you do abc...", "comment-002":"This is where you do xyz..." } මෙය නම අද්විතීයව තබා ගන්නා අතර ඔබ කැමති ඕනෑම සංගීත අගයක් එක් කිරීමට ඉඩ දෙයි. අදහස් තවමත් ඔබේ JSON හි කොටසක් නොවිය යුතු නිසා එය තවමත් විහිළුවක්. තවත් විකල්පයක් ලෙස, ඔබේ JSON ට පෙර හෝ පසුව අදහස් එකතු නොකරන්නේ ඇයි?
ජසිමොව්
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.