diff options
author | Florian Merz <me@fiji-flo.de> | 2021-02-11 14:45:12 +0100 |
---|---|---|
committer | Florian Merz <me@fiji-flo.de> | 2021-02-11 14:45:12 +0100 |
commit | cb9e359a51c3249d8f5157db69d43fd413ddeda6 (patch) | |
tree | ae3040d626c3b5717da5bda2af9f0a9ff9bd389f /files/ca/web/javascript/reference/global_objects/json/index.html | |
parent | 8260a606c143e6b55a467edf017a56bdcd6cba7e (diff) | |
download | translated-content-cb9e359a51c3249d8f5157db69d43fd413ddeda6.tar.gz translated-content-cb9e359a51c3249d8f5157db69d43fd413ddeda6.tar.bz2 translated-content-cb9e359a51c3249d8f5157db69d43fd413ddeda6.zip |
unslug ca: move
Diffstat (limited to 'files/ca/web/javascript/reference/global_objects/json/index.html')
-rw-r--r-- | files/ca/web/javascript/reference/global_objects/json/index.html | 242 |
1 files changed, 242 insertions, 0 deletions
diff --git a/files/ca/web/javascript/reference/global_objects/json/index.html b/files/ca/web/javascript/reference/global_objects/json/index.html new file mode 100644 index 0000000000..efc86409e6 --- /dev/null +++ b/files/ca/web/javascript/reference/global_objects/json/index.html @@ -0,0 +1,242 @@ +--- +title: JSON +slug: Web/JavaScript/Referencia/Objectes_globals/JSON +translation_of: Web/JavaScript/Reference/Global_Objects/JSON +--- +<div>{{JSRef("Global_Objects", "JSON")}}</div> + +<h2 id="Summary" name="Summary">Resum</h2> + +<p>L'objecte <strong><code>JSON</code></strong> conté mètodes per a interpretar <a class="external" href="http://json.org/">JavaScript Object Notation</a> ({{glossary("JSON")}}) i convertir valors a JSON. Aquest objecte no pot ser cridat o construit, i a banda dels seus dos mètodes no té cap més funcionalitat o interès.</p> + +<p>and converting values to JSON. It can't be called or constructed, and aside from its two method properties it has no interesting functionality of its own.</p> + +<h2 id="Description" name="Description">Descripció</h2> + +<h3 id="JavaScript_Object_Notation" name="JavaScript_Object_Notation">JavaScript Object Notation</h3> + +<p>JSON és una sintaxi que permet serialitzar objectes, arrays, nombres, strings, booleans i {{jsxref("null")}}. Està basada en la sintaxi de JavaScript però és diferent: algunes parts de JavaScript no són convertibles a JSON i algunes de JSON no ho són a JavaScript. Vegeu també <a href="http://timelessrepo.com/json-isnt-a-javascript-subset">JSON: El subconjunt de JavaScript que no ho és</a>.</p> + +<table> + <caption>Diferències entre JavaScript i JSON</caption> + <thead> + <tr> + <th scope="col">Tipus a JavaScript</th> + <th scope="col">Diferències a JSON</th> + </tr> + </thead> + <tbody> + <tr> + <td>Objectes i Arrays</td> + <td>Els noms de les propietats han de estar embolcallats per cometes dobles; les cometes simples estan prohibides</td> + </tr> + <tr> + <td>Nombres</td> + <td>No són permesos zeros a l'esquerra; els nombres decimals separent la part sencera amb un punt i han de tindre al menys un digit decimal.</td> + </tr> + <tr> + <td>Strings</td> + <td> + <p>Només es pot escapar un grup limitat de caràcters; alguns caràcters de control no són permesos; el separador de línies Unicode (<a href="http://unicode-table.com/en/2028/">U+2028</a>) i el separador de paràgrafs (<a href="http://unicode-table.com/en/2029/">U+2029</a>) són permesos; les strings han d'estar embolcallades per cometes dobles. Vegeu l'exemple següent on {{jsxref("JSON.parse()")}} funciona correctament i es llença un {{jsxref("SyntaxError")}} a l'avaluar el codi com a JavaScript:</p> + + <pre class="brush: js"> +var code = '"\u2028\u2029"'; +JSON.parse(code); // funciona correctament +eval(code); // falla +</pre> + </td> + </tr> + </tbody> +</table> + +<p>La sintaxi completa de JSON és la següent:</p> + +<pre><var>JSON</var> = <strong>null</strong> + <em>o</em> <strong>true</strong> <em>o</em> <strong>false</strong> + <em>o</em> <var>JSONNumber</var> + <em>o</em> <var>JSONString</var> + <em>o</em> <var>JSONObject</var> + <em>o</em> <var>JSONArray</var> + +<var>JSONNumber</var> = <strong>-</strong> <var>PositiveNumber</var> + <em>o</em> <var>PositiveNumber</var> +<var>PositiveNumber</var> = DecimalNumber + <em>o</em> <var>DecimalNumber</var> <strong>.</strong> <var>Digits</var> + <em>o</em> <var>DecimalNumber</var> <strong>.</strong> <var>Digits</var> <var>ExponentPart</var> + <em>o</em> <var>DecimalNumber</var> <var>ExponentPart</var> +<var>DecimalNumber</var> = <strong>0</strong> + <em>o</em> <var>OneToNine</var> <var>Digits</var> +<var>ExponentPart</var> = <strong>e</strong> <var>Exponent</var> + <em>o</em> <strong>E</strong> <var>Exponent</var> +<var>Exponent</var> = <var>Digits</var> + <em>o</em> <strong>+</strong> <var>Digits</var> + <em>o</em> <strong>-</strong> <var>Digits</var> +<var>Digits</var> = <var>Digit</var> + <em>o</em> <var>Digits</var> <var>Digit</var> +<var>Digit</var> = <strong>0</strong> through <strong>9</strong> +<var>OneToNine</var> = <strong>1</strong> through <strong>9</strong> + +<var>JSONString</var> = <strong>""</strong> + <em>o</em> <strong>"</strong> <var>StringCharacters</var> <strong>"</strong> +<var>StringCharacters</var> = <var>StringCharacter</var> + <em>o</em> <var>StringCharacters</var> <var>StringCharacter</var> +<var>StringCharacter</var> = qualsevol caràcter excepte + <strong>"</strong> <em>o</em> <strong>\</strong> <em>o</em> U+0000 fins a U+001F + <em>o</em> <var>EscapeSequence</var> +<var>EscapeSequence</var> = <strong>\"</strong> <em>o</em> <strong>\/</strong> <em>o</em> <strong>\\</strong> <em>o</em> <strong>\b</strong> <em>o</em> <strong>\f</strong> <em>o</em> <strong>\n</strong> <em>o</em> <strong>\r</strong> <em>o</em> <strong>\t</strong> + <em>o</em> <strong>\u</strong> <var>HexDigit</var> <var>HexDigit</var> <var>HexDigit</var> <var>HexDigit</var> +<var>HexDigit</var> = <strong>0</strong> fins a <strong>9</strong> + <em>o</em> <strong>A</strong> fins a <strong>F</strong> + <em>o</em> <strong>a</strong> fins a <strong>f</strong> + +<var>JSONObject</var> = <strong>{</strong> <strong>}</strong> + <em>o</em> <strong>{</strong> <var>Members</var> <strong>}</strong> +<var>Members</var> = <var>JSONString</var> <strong>:</strong> <var>JSON</var> + <em>o</em> <var>Members</var> <strong>,</strong> <var>JSONString</var> <strong>:</strong> <var>JSON</var> + +<var>JSONArray</var> = <strong>[</strong> <strong>]</strong> + <em>o</em> <strong>[</strong> <var>ArrayElements</var> <strong>]</strong> +<var>ArrayElements</var> = <var>JSON</var> + <em>o</em> <var>ArrayElements</var> <strong>,</strong> <var>JSON</var> +</pre> + +<p>Pot haver-hi espais en blanc sense significat a qualsevol lloc excepte dins un<code><var> JSONNumber</var></code> (el nombres no poden contenir espais) o <code><var>JSONString</var></code> (on s'interpreta com el caràcter corrsponen dins l'string, o causaria un error). Els caràcters tabulador (<a href="http://unicode-table.com/en/0009/">U+0009</a>), retorn de carro (<a href="http://unicode-table.com/en/000D/">U+000D</a>), nova línia (<a href="http://unicode-table.com/en/000A/">U+000A</a>), i l'espai (<a href="http://unicode-table.com/en/0020/">U+0020</a>) són els únics caràcters d'espai en blanc acceptats.</p> + +<h2 id="Methods" name="Methods">Mètodes</h2> + +<dl> + <dt>{{jsxref("JSON.parse()")}}</dt> + <dd>Interpreta una string com a JSON, opcionalment transforma el valor produït i les seves propietats, i retorna el valor.</dd> + <dt>{{jsxref("JSON.stringify()")}}</dt> + <dd>Retorna un JSON string corresponent al valor especificat, opcionalment només inclou determinades propietats o reemplaça el valor de propietats tal i com defineixi l'usuari.</dd> +</dl> + +<h2 id="Polyfill" name="Polyfill">Polyfill</h2> + +<p>L'objecte <code>JSON</code> no és suportat a navegadors antics. Aquest problema pot solventar-se insertant el codi següent al principi dels scripts, permetent l'ús de l'objecte <code>JSON</code> en implementacions on no hi ha suport natiu (com ara Internet Explorer 6).</p> + +<p>El següent algorisme emula l'objecte <code>JSON</code> natiu:</p> + +<pre class="brush: js">if (!window.JSON) { + window.JSON = { + parse: function(sJSON) { return eval('(' + sJSON + ')'); }, + stringify: (function () { + var toString = Object.prototype.toString; + var isArray = Array.isArray || function (a) { return toString.call(a) === '[object Array]'; }; + var escMap = {'"': '\\"', '\\': '\\\\', '\b': '\\b', '\f': '\\f', '\n': '\\n', '\r': '\\r', '\t': '\\t'}; + var escFunc = function (m) { return escMap[m] || '\\u' + (m.charCodeAt(0) + 0x10000).toString(16).substr(1); }; + var escRE = /[\\"\u0000-\u001F\u2028\u2029]/g; + return function stringify(value) { + if (value == null) { + return 'null'; + } else if (typeof value === 'number') { + return isFinite(value) ? value.toString() : 'null'; + } else if (typeof value === 'boolean') { + return value.toString(); + } else if (typeof value === 'object') { + if (typeof value.toJSON === 'function') { + return stringify(value.toJSON()); + } else if (isArray(value)) { + var res = '['; + for (var i = 0; i < value.length; i++) + res += (i ? ', ' : '') + stringify(value[i]); + return res + ']'; + } else if (toString.call(value) === '[object Object]') { + var tmp = []; + for (var k in value) { + if (value.hasOwnProperty(k)) + tmp.push(stringify(k) + ': ' + stringify(value[k])); + } + return '{' + tmp.join(', ') + '}'; + } + } + return '"' + value.toString().replace(escRE, escFunc) + '"'; + }; + })() + }; +} +</pre> + +<p>Dos <a class="external" href="http://remysharp.com/2010/10/08/what-is-a-polyfill/">polyfills</a> complexos coneguts per a l'objecte <code>JSON</code> són <a class="link-https" href="https://github.com/douglascrockford/JSON-js">JSON2</a> i <a class="external" href="http://bestiejs.github.com/json3">JSON3</a>.</p> + +<h2 id="Specifications" name="Specifications">Especificacions</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificació</th> + <th scope="col">Estat</th> + <th scope="col">Comentaris</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.12', 'JSON')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-json-object', 'JSON')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Compatibilitat amb navegadors</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Característica</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Suport bàsic</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoDesktop("1.9.1")}}</td> + <td>{{CompatIE("8.0")}}</td> + <td>{{CompatOpera("10.5")}}</td> + <td>{{CompatSafari("4.0")}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Característica</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Suport bàsic</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoMobile("1.0")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<p>Basat en la <a class="external" href="http://kangax.github.com/es5-compat-table/">taula de compatibilitat de Kangax</a>.</p> + +<h2 id="See_also" name="See_also">Vegeu també</h2> + +<ul> + <li>{{jsxref("Date.prototype.toJSON()")}}</li> +</ul> |