Un array può essere un testo JSON di primo livello?

per il dibattito in questo post: json-conversion-in-javascript

Sì, un array è legale come testo JSON di primo livello.

Esistono tre documenti standard che definiscono JSON: RFC 4627 , RFC 7159 (che obsolete RFC 4627) e ECMA-404 . Si differenziano per gli elementi di livello superiore che consentono, ma consentono tutti un object o un array come elemento di livello superiore.

  • RFC 4627: object o matrice.
    “Un testo JSON è un object o array serializzato.”
  • RFC 7159: qualsiasi valore JSON.
    “Un testo JSON è un valore serializzato.”
  • ECMA-404: qualsiasi valore JSON.
    “Un testo JSON è una sequenza di token formati da punti di codice Unicode conformi alla grammatica del valore JSON.”

, ma dovresti considerare di rendere la radice un object invece in alcuni scenari, a causa del dirottamento JSON . Si tratta di una vulnerabilità legata all’intercettazione delle informazioni basata sull’override del costruttore di array in JavaScript.

Questo è dalla specifica ECMAScript.

 JSONText:
     JSONValue

 JSONValue:
     JSONNullLiteral 
     JSONBooleanLiteral 
     JSONObject 
     JSONArray 
     JSONString 
     JSONNumber

si, provalo qui.

http://www.jsonlint.com/

e inserisci [{}]

C’è un po ‘di confusione, visto negli altri commenti. Il tipo di supporto “application / json” consente solo oggetti o array al livello principale per JSON-text, per JSON RFC . Tuttavia, per un parser qualsiasi valore JSON è accettabile, come mostrato nelle specifiche ECMAScript.