Библиотеки » JSON (dart:json) » JSON » stringify
функция JSON::stringify
Синтаксис
staticПередаваемые параметры
Object objectВозвращаемое значение
StringОписание
Метод stringify
сериализует объект Object object
в формат JSON. Прямое преобразование поддерживают следующие типы данный:
Null
String
num
bool
List
, причем все элементы списка должны поддерживать преобразование в JSONMap
, причем все ключи и элементы хеш-таблицы должны поддерживать преобразование в JSON
В случае, если преобразование применяется к объектам других типов, то происходит попытка вызова метода объекта "toJson()", причем результат выполнения метода toJson()
обязательно должен принадлежать к одному из выше перечисленных типов, поскольку он будет использоваться в дальнейших преобразованиях, вместо иcходного объекта.
В случае, если объект не поддерживает метод "toJson()", или возвращаемое значение не относится к типам, которые позволяют прямую сериализацибю в JSON, то генерируется исключение типа JsonUnsupportedObjectError
.
Во время сериализации данный, исходный объект не должен изменятся внутри метода "toJson()".
Так же, если один и тот же объект, сериализуется несколько раз, то метод stringify
может кешировать результаты преобразования, т.е если мы изменилил объект после того, как первый раз его преобразовали в JSON, то в следующий раз эти изменения могут и не отразится на результате сериализации.
Заметки
Примеры использования:
import "dart:json";
import "dart:mirrors";
class testJSON {
String name;
String text;
testJSON(String name, String text) {
this.name = name;
this.text = text;
}
dynamic toJson() {
return {
'name': name,
'text': text
};
}
}
void main() {
String jsonResult;
// получим строку '100'
jsonResult = JSON.stringify(100);
print(jsonResult);
// получим строку '0.1'
jsonResult = JSON.stringify(0.1);
print(jsonResult);
// получим строку 'test'
jsonResult = JSON.stringify('test');
print(jsonResult);
// получим строку '["a","b","c"]'
jsonResult = JSON.stringify(['a','b','c']);
print(jsonResult);
// получим строку '{"c":"3","a":"1"}'
jsonResult = JSON.stringify({"c":"3","a":"1"});
print(jsonResult);
// преобразуем объект пользовательского типа в JSON
// получим строку {"name":"aaaa","text":"bbbb"}
jsonResult = JSON.stringify(new testJSON('aaaa', 'bbbb'));
print(jsonResult);
// генерирует исключение типа JsonUnsupportedObjectError,
// потому что класс Date, не поддерживает метод "toJson()"
jsonResult = JSON.stringify(new Date.now());
}