在dart中使用json.encode时,如何输出格式化好的字符串
时间: 2023-09-17 22:06:32 浏览: 70
### 回答1:
Dart中使用json.encode输出格式化好的字符串,可以使用json.encode()方法中的toEncodable参数。toEncodable参数允许您指定一个函数,用于将对象转换为可编码的形式。您可以使用这个函数来实现自定义的格式化输出。
例如:
```
import 'dart:convert';
class Person {
final String name;
final int age;
Person(this.name, this.age);
Map<String, dynamic> toJson() => {
'name': name,
'age': age,
};
}
void main() {
final person = Person('Tom', 20);
final jsonString = json.encode(person, toEncodable: (person) => person.toJson());
print(jsonString);
// Output: {"name":"Tom","age":20}
}
```
这样就可以通过toJson()函数来实现自定义的格式化输出。
### 回答2:
在Dart中使用`json.encode`函数时,默认情况下输出的是没有格式化的字符串。但是我们可以通过使用`json.encode`的`toEncodable`参数来自定义输出的格式。
首先,我们需要导入`dart:convert`库,其中包含了`json.encode`函数。然后,我们可以创建一个自定义的`toEncodable`函数,该函数接收一个动态参数,并返回被编码的对象。
接下来,我们可以在`json.encode`函数中使用`toEncodable`参数来指定格式化的方式。在这个参数中,我们可以使用`json.encode`函数的第一个参数。
下面是一个示例代码:
```dart
import 'dart:convert';
class Person {
String name;
int age;
Person(this.name, this.age);
Map<String, dynamic> toJson() {
return {
'name': name,
'age': age,
};
}
}
String formatJson(Object object) {
return JsonEncoder.withIndent(' ').convert(object);
}
void main() {
Person person = Person('John', 30);
String formattedJson = formatJson(person.toJson());
print(formattedJson);
}
```
在这个示例中,我们定义了一个`Person`类,该类具有`name`和`age`属性,并且还定义了一个`toJson`方法。在`main`函数中,我们创建了一个`Person`对象,然后将其转换为JSON格式的字符串,然后我们在`formatJson`函数中使用`JsonEncoder.withIndent(' ').convert`来输出格式化后的字符串,其中`' '`表示缩进两个空格。最后,我们打印这个格式化后的JSON字符串。
通过使用`json.encode`函数的`toEncodable`参数以及自定义的格式化函数,我们可以在Dart中输出格式化好的JSON字符串。