Ce face JsonEncoder.withIndent
JsonEncoder este clasa din spatele lui jsonEncode. Creezi o dată convertorul și apelezi convert(obiect) de câte ori vrei. const JsonEncoder() scrie pe un rând, exact ca jsonEncode.
JsonEncoder.withIndent(' ') pune fiecare cheie și fiecare element pe rândul lui, indentat cu textul dat (de obicei două spații). Este forma potrivită pentru fișiere de configurare citite de oameni sau pentru afișare la depanare.
Ca orice Converter, se poate lega cu alte convertoare: encoder.fuse(utf8.encoder) transformă direct obiectul în octeți UTF-8.
Parametri
| Parametru | Descriere |
|---|---|
indent |
Textul folosit pentru un nivel de indentare (de ex. ' '). null înseamnă fără indentare. |
toEncodable |
Opțional, ca la jsonEncode. |
Ce returnează
convert returnează textul JSON.
Exemple
Exemplul 1: JSON indentat
import 'dart:convert';
void main() {
const frumos = JsonEncoder.withIndent(' ');
final config = {
'aplicatie': 'Catalog',
'versiune': 2,
'clase': ['9A', '10B'],
'baza': {'gazda': 'localhost', 'port': 5432},
};
print(frumos.convert(config));
}
Rezultat
{
"aplicatie": "Catalog",
"versiune": 2,
"clase": [
"9A",
"10B"
],
"baza": {
"gazda": "localhost",
"port": 5432
}
}
Exemplul 2: Același convertor, folosit de mai multe ori
import 'dart:convert';
void main() {
const compact = JsonEncoder();
final elevi = [
{'nume': 'Ana', 'nota': 10},
{'nume': 'Ion', 'nota': 8},
];
for (final e in elevi) {
print(compact.convert(e));
}
print(compact.convert(elevi) == jsonEncode(elevi));
}
Rezultat
{"nume":"Ana","nota":10}
{"nume":"Ion","nota":8}
true
Greșeli frecvente
- Dai un număr în loc de text:
JsonEncoder.withIndent(2)nu compilează. Indentarea este unString, de exemplu' 'sau'\t'.
Comenzi înrudite
jsonEncode: Transformă hărți, liste, texte, numere, bool și null într-un text JSON; alte obiecte trebuie să aibă toJson().JsonDecoder: Convertorul reutilizabil din JSON în obiecte Dart; se poate lega de utf8.decoder pentru fișiere și fluxuri.Codec: Clasa de bază pentru perechi encode/decode (utf8, base64, json); fuse le leagă în lanț, inverted le inversează.