码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2020-09-18 01:58:05      阅读:54      评论:0      收藏:0      [点我收藏+]

标签:code   ons   depend   创建   程序   com   his   zab   根目录   

课题

  • 将 JSON 字符串反序列化为 Persons 类(结构)的对象 ,然后将这个对象序列化为 JSON 字符串。
  • Persons 类(结构)包含一个字段:Person 类(结构)的 persons 数组。
  • Person 类(结构)包含两个字段:字符串类型的 name 字段和整数类型的 age 字段。

创建工程

打开 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
    }
  ]
}

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

标签:code   ons   depend   创建   程序   com   his   zab   根目录   

原文地址:https://www.cnblogs.com/zwvista/p/13672431.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!