flutter json理解

本文详细介绍了JSON数据在Java中如何转换为对象及字符串的过程。包括使用toJson方法将对象转换为JSON字符串,以及fromJson方法将JSON字符串转换回Java对象。此外还讲解了如何利用dart:convert中的json.encode和json.decode进行字符串与Map之间的相互转换。

总共就两种状态:
JSON 对象

{ "name":"Bill Gates", "age":62, "car":null }

JSON字符串

"{ "name":"Bill Gates", "age":62, "car":null }"

参考
要么就是字符串转对象,要么就是对象转字符串
1.toJson 是把字符串转成 json 形式(to,就是转成json)
将每个字段都转成map,然后

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = <String, dynamic>{};
    data['unlock_status'] = unlockStatus;
    data['user_info'] = userInfo;
    return data;
  }

得到类似下面的

{“name”:“小牧”,“age”:23,“hobby”:“游戏”}

2.fromJson 是把json 形式转成Java对象,然后app就可以使用了

CustomMessageBean customMessageBean = CustomMessageBean.fromJson(
            json.decode(customMessageGroupBean.messageContent!));

又到了json.encode和json.decode了
既然传的是Map,那这个就是转String类型的

json.encode(Map(String,dynamic))

传的是String,那就是转成map类型的了

json.decode(String)

参考
应用:转成map就可以使用里面的字段了,问题是,如果下面的user[‘name’]里面的name写错了,就解析错了

var data= '{"name": "Kevin","email": "Kevin0724@163.com"}';
    Map<String,dynamic> user = json.decode(data);
    //输出名字
    print("Hello,my name is ${user['name']}");
    //输出邮箱
    print("Hello,This is my email ${user['email']}");

而encode,将map转成String

var user = new User("Kevin","Kevin0724@163.com");
  String user_json = json.encode(user);
  print(user_json);

手动解析
比如从数据库获取缓存数据时是现在的数据,数组里面带着一个元素,key是value,值是平时请求的结构类型

[{"value":"{"code":200,"msg":"success","data":{}}"}]

可以用
json.decoder.convert将string转为map类型,获取数组的第一个,取key为value的String值,然后就可以从数据库缓存里面获取平时用到的请求格式了

json.decoder.convert(data.first['value'])

然后就得到了

{"code":200,"msg":"success","data":{}}

不想要code和msg字段那就
在上面的基础上再手动解析一层
value就是上面那串结果

        ConfigInfoModel model =
            ConfigInfoModel.fromJson(json.decoder.convert(value)['data']);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值