Dart使用的时候,有个地方特别不方便,就是json model的转写.
dart json对象转为dart对象
import 'dart:convert';
// 定义一个与 JSON 数据相匹配的 Dart 类
class User {
String name;
int age;
String email;
User(this.name, this.age, this.email);
// 将 Dart 对象转换为 JSON 格式的 Map
Map<String, dynamic> toJson() {
return {
'name': name,
'age': age,
'email': email,
};
}
// 从 JSON 格式的 Map 中创建 Dart 对象
factory User.fromJson(Map<String, dynamic> json) {
return User(
json['name'],
json['age'],
json['email'],
);
}
}
void main() {
// 假设有一个 JSON 字符串
String jsonString = '{"name": "John", "age": 30, "email": "john@example.com"}';
// 将 JSON 字符串转换为 Dart 对象
Map<String, dynamic> jsonMap = json.decode(jsonString);
User user = User.fromJson(jsonMap);
// 打印 Dart 对象的属性
print('Name: ${user.name}');
print('Age: ${user.age}');
print('Email: ${user.email}');
// 将 Dart 对象转换为 JSON 字符串
String userJsonString = json.encode(user.toJson());
print('User JSON String: $userJsonString');
}
而就ES6而言,json转换特别方便
// JavaScript对象
const person = {
name: "John Doe",
age: 30,
email: "john.doe@example.com",
isEmployed: true,
hobbies: ["reading", "swimming", "coding"],
address: {
city: "New York",
country: "USA",
},
};
// 将JavaScript对象转换为JSON字符串
const jsonString = JSON.stringify(person);
console.log(jsonString);
// 将JSON字符串转换回JavaScript对象
const jsonObject = JSON.parse(jsonString);
console.log(jsonObject);
为什么会出现这个问题.
JavaScript 和 Dart 是两种不同的编程语言,因此它们的对象有一些区别。以下是 JavaScript 对象和 Dart 对象的一些主要区别:
语言类型:
JavaScript 是一种动态类型语言,对象的属性和方法可以在运行时动态添加和修改。
Dart 是一种静态类型语言,对象的属性和方法在编译时就需要明确定义,并且通常不允许在运行时动态添加新的属性或方法。
属性和方法的声明:
JavaScript 对象的属性和方法的声明是通过直接赋值的方式完成的,如 object.property = value 和 object.method = function() { ... }。
Dart 对象的属性和方法的声明是通过类的定义完成的,需要在类中明确声明属性和方法,并且可以使用类的构造函数初始化对象的属性。
类的支持:
JavaScript 中并没有像传统的面向对象语言那样明确的类的概念,对象可以直接创建而无需先定义类。
Dart 是一种面向对象语言,需要先定义类,然后通过实例化类来创建对象。
继承和多态:
JavaScript 支持原型继承和基于原型链的多态。
Dart 支持基于类的继承和多态,使用关键字 extends 来实现类的继承。
构造函数:
JavaScript 对象可以使用字面量形式直接创建,也可以使用构造函数创建。
Dart 对象需要使用类的构造函数来创建实例。
类的访问修饰符:
JavaScript 中没有像 Dart 那样的访问修饰符,所有属性和方法默认都是公开的。
Dart 支持公开、私有和受保护的访问修饰符,使得可以控制类成员的访问权限。
虽然 JavaScript 和 Dart 有一些不同之处,但它们都是非常灵活和强大的编程语言,可以用于开发各种类型的应用程序。根据具体的项目需求和团队偏好,选择适合的语言来开发应用程序是很重要的。
JS的对象初始化
可以通过new Object(), Object.create()方法,或者使用字面量标记(初始化标记)初始化对象。 一个对象初始化器,由花括号/大括号 ({}) 包含的一个由零个或多个对象属性名和其关联值组成的一个逗号分隔的列表构成。
1.构造函数
var student = new Object();
student.name="lilei";
student.age=18;
2.对象字面量
var student = {
"name":"lilei",
"age":18
3.赋值
var student = {};
studnet.name="lilei";
student.age=18;
json字符串对象调用
js对象时js的特殊数据类型,而json则是字符串;
json字符串之所以能被调用,是因为json字符串经过了eval()处理;
看下两种类型的写法
//js对象
fuction person(){
this.name = 'kervi';
this.say = function(){
alert('hi');
}
}
person = new person();
person.say();
//json对象 ;
> person = {
> "name" : "kervi",
> "say":function(){ alert('hi'); }
> }
person.say();
可以看到,json是可以直接调用的,而js对象则需要new;这就会涉及到面向对象的特点了,封装,继承,多态;
之前想json好像很方便,是不是能代替了js对象,来实现面向对象编程呢,答案是不可能。当然,不说数据交互,json对象他在一些场景下,是有他简单,快速的优点的;