gpt4 book ai didi

json - 在 'parent'对象的.fromJson方法中从JSON提取对象

转载 作者:行者123 更新时间:2023-12-03 04:55:48 25 4
gpt4 key购买 nike

我想将ColorSwatch存储在json中,并将其提取到对象的.fromJson方法中。

我尝试将其存储在JSON中为:

"colorSwatch": "ColorSwatch(0xFFFFB7DE, { 'highlight': Color(0xFFFFB7DE), 'splash': Color(0xFFF94CBF) })"

然后使用以下命令提取它:

colorSwatch = jsonMap ['colorSwatch'],

没用我尝试将JSON更改为:
"colorSwatch": "0xFFFFB7DE, { 'highlight': Color(0xFFFFB7DE), 'splash': Color(0xFFF94CBF) }"

然后将对象的.fromJson方法修改为:
colorSwatch = ColorSwatch(jsonMap['colorSwatch']),

没用然后,我尝试:
colorSwatch = jsonMap['colorSwatch'] as ColorSwatch,

没用

然后我尝试将突出显示颜色和初始颜色分别保存在json中并提取
highlight = jsonMap['highlight'] as int,
splash = jsonMap['splash'] as int,
colorSwatch = new ColorSwatch(0xFFFFD28E, {'highlight': Color(highlight), 'splash': Color(splash)}),

但是显然,我只允许对对象的fromJson方法中的静态变量进行操作。

所以我被卡住了。

我希望将ColorSwatch对象附加到Riddle对象,因此与Riddle相关的所有属性都放在一个位置,不需要在需要时在其他位置组装。
  • 似乎无法在内部构建对象(此处为ColorSwatch)
    另一个对象.fromJson方法,对吗?
  • 所以这意味着我必须在一行中提取整个对象
    代码,我该怎么做?
  • 最佳答案

    Json不支持十六进制,因此您需要将它们编写为字符串并使用int.tryparse进行转换:

      var hexadecimalString = 'ff542144';
    var decimalInteger = int.tryParse(hexadecimalString, radix: 16);

    对于您的 ColorSwatch,您需要这样的帮助程序类:
    class ColorSwatch {
    final Color swatch;
    final Color splash;
    final Color highlight;

    ColorSwatch(this.swatch, this.splash, this.highlight);

    factory ColorSwatch.fromJson(Map<String, dynamic> json) {
    return ColorSwatch(
    Color(int.tryParse(json['colorSwatch'], radix: 16)),
    Color(int.tryParse(json['highlight'], radix: 16)),
    Color(int.tryParse(json['splash'], radix: 16)),
    );
    }

    String toJson() {
    return jsonEncode({
    'colorSwatch': swatch.value.toRadixString(16),
    'highlight': highlight.value.toRadixString(16),
    'splash': splash.value.toRadixString(16),
    });
    }
    }

    关于json - 在 'parent'对象的.fromJson方法中从JSON提取对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60617673/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com