序列化是将对象转换为 JSON 格式。
班级
class Person {
int id;
String name;
int age;
Person(this.id, this.name, this. age);
}
一个东西
//объект
_person = Person(1, "Ivan", 36);
JSON格式
{
"id" : 1,
"name" : "Ivan",
"age" : 36
}
我想做一个序列化,将对象转换为 JSON 格式并将其显示在屏幕上。我做不到。为什么?以下是完整代码和错误截图。
主要.dart
import 'package:flutter/material.dart';
import 'dart:convert';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Name App',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: Scaffold(
appBar: AppBar(
title: Text('Name Page'),
),
body: MyHomePage(),
),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
Person _person;
String _str = '';
@override
void initState() {
super.initState();
//объект
_person = Person(1, "Ivan", 36);
//сериализация, преобразование объекта в формат JSON
_str = jsonEncode(_person);
}
@override
void dispose() {
super.dispose();
}
void _f1() {
setState(() {
});
}
@override
Widget build(BuildContext context) {
return Stack(
children: [
Align(
alignment: Alignment.topLeft,
child: Padding(
padding: const EdgeInsets.all(5.0),
child: Text(
_str
),
),
),
],
);
}
}
class Person {
int id;
String name;
int age;
Person(this.id, this.name, this. age);
}
在 GO 语言中,这可以通过
main.go 之类的方式解决
package main
import (
"encoding/json"
"net/http"
)
func main() {
http.HandleFunc("/", myController1)
http.ListenAndServe("localhost:8080", nil)
}
type Number struct {
Id int64 `json:"id"` // свойство Id будет преобразовано в ключ "id"
Num int64 `json:"num"` // свойство Num будет преобразовано в ключ "num"
En string `json:"en"` // свойство En будет преобразовано в ключ "en"
Ru string `json:"ru"` // свойство Ru будет преобразовано в ключ "ru"
}
func myController1(w http.ResponseWriter, r *http.Request) {
n0 := Number {
Id: 0,
Num: 0,
En: "zero",
Ru: "ноль",
}
encoder := json.NewEncoder(w)
err := encoder.Encode(&n0)
if err != nil {
panic(err)
}
}