当前位置: 首页 > 知识库问答 >
问题:

如何在Dart中编码和解码与JSON之间的自定义对象列表?

仲阳朔
2023-03-14

我有一个具有自己属性的doughnut类,我创建了一个doughnut对象列表,并希望在JSON中对其进行编码和解码。我怎样才能做到这一点?我已经实现了对对象本身的解析,但在尝试对这些对象的列表进行同样的解析时遇到了麻烦。

import 'package:flutter/material.dart';

class Doughnut {
  String name;
  String filling;
  List<String> toppings;
  double price;
  var days;

  Doughnut(this.name, this.filling, this.toppings, this.price,this.days);

  Doughnut.fromJson(Map<String, dynamic> json) {
    name = json['name'];
    filling = json['filling'];
    var toppingsFromJson = json['toppings'];
    toppings = new List<String>.from(toppingsFromJson);
    price = json['price'];
    var daysFromJson=json["days"];
    days=new Map<String,bool>.from(daysFromJson);
    }

  Map<String, dynamic> toJson() =>
      {"name": name, "filling": filling, 'toppings': toppings, "price": price,"days":days};
}

共有1个答案

扈沛
2023-03-14

您必须对数组进行解码:

var toppingsFromJson = jsonDecode(json['toppings']);
 类似资料:
  • 这可能很容易,但我真的可以在这里使用Ajax和JSON方面更聪明的人来帮助我。我有一个Javascript函数将Ajax请求传递给PHP后端。我将传递一个javascript对象作为“request\u parameters”post变量。当它出现在PHP上时,我可以导航它,但是对象结构已经被数组所取代。相反,我希望对象结构保持完整,因此作为足够聪明的危险类型,我决定对对象进行JSON编码: 相对

  • 问题内容: 我正在Go中编写一个应用程序,该应用程序使用编码/目标在节点之间通过UDP发送结构和切片。它工作正常,但我注意到encoding / json也具有类似的API。搜索并找到以下信息(https://golang.org/pkg/encoding/): gob软件包gob管理gob的流-编码器(发送器)和解码器(接收器)之间交换的二进制值。 json程序包json实现RFC 4627中定

  • 问题内容: 是否有将JavaScript对象编码为JSON的好方法? 我有一个键值对列表…其中名称来自复选框,根据是否选中该框,值为true或false: 我想将这些值传递到JSON对象中,然后存储到cookie中以呈现表(将根据用户检查的内容添加列)。 有人知道解决方案吗? 问题答案: 我认为您可以使用JSON.stringify:

  • 我正在尝试将web项目转换为Spring。我已经加入了Spring Security,但是旧的项目使用SHA-1转换成十六进制字符串来加密用户密码。

  • 我使用laravel Redis cache facade将我的对象数据(JSON编码)推送到Redis,并使用Node.js Redis模块使用关键字搜索取回数据。我的JSON字符串像这样存储在Redis中。这里的字符串破坏了我在节点上的JSON解析。Redis存储了我的json_encoded字符串,附加了一些。 有什么建议如何解决这个问题,或者我应该看看redis的其他数据类型(列表或哈希)

  • 问题内容: 我有一些要发送到我的应用程序中的芹菜任务的对象。这些对象显然无法使用默认json库进行json序列化。有没有一种方法可以使celery使用自定义JSON / 对这些对象进行序列化/反序列化? 问题答案: 这里有些晚,但是您应该能够通过在kombu序列化程序注册表中注册自定义编码器和解码器,如docs中所示: http [//docs.celeryproject.org/en/lates