JSON数据的解析和生成(Dart)

时间:2020-09-18 01:58:05   收藏:0   阅读:54

课题

创建工程

打开 Intellij IDEA, 安装 Dart 插件
新建工程,选择 Dart -> Dart Command Line App, 输入 Dart SDK 路径,
然后点击 Next,输入工程名 example,完成向导。

添加依赖

在 pubspec.yaml 的 dependencies 部分添加依赖

dependencies:
  json_annotation: ^3.0.0
  analyzer: ‘0.39.14‘

点击文件上方的 Pub get 链接下载依赖

Dart

example.dart 代码如下

import ‘dart:convert‘;

import ‘package:json_annotation/json_annotation.dart‘;

part ‘example.g.dart‘;

@JsonSerializable()
class Persons {
  List<Person> persons;

  Persons() {}
  factory Persons.fromJson(Map<String, dynamic> json) => _$PersonsFromJson(json);
  Map<String, dynamic> toJson() => _$PersonsToJson(this);
  @override
  String toString() => "persons=$persons";
}

@JsonSerializable()
class Person {
  @JsonKey(name: ‘name‘)
  String name;
  int age;

  Person() {}
  factory Person.fromJson(Map<String, dynamic> json) => _$PersonFromJson(json);
  Map<String, dynamic> toJson() => _$PersonToJson(this);
  @override
  String toString() => "name=$name,age=$age";
}

void main() {
  final jsonString = """
{
  "persons" : [
    {
      "name" : "Joe",
      "age" : 12
    }
  ]
}
""";
  final o = Persons.fromJson(jsonDecode(jsonString) as Map<String, dynamic>);
  print(o);
  final s = jsonEncode(o);
  print(s);
  final s2 = JsonEncoder.withIndent("  ").convert(o);
  print(s2);
}

生成 json 转换的代码

在工程根目录下执行以下命令

pub run build_runner build

该命令会生成 example.g.dart 文件

输出

程序执行后的输出为

persons=[name=Joe,age=12]
{"persons":[{"name":"Joe","age":12}]}
{
  "persons": [
    {
      "name": "Joe",
      "age": 12
    }
  ]
}

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!