首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态变化的Json地图

动态变化的Json地图
EN

Stack Overflow用户
提问于 2022-03-04 11:27:14
回答 2查看 82关注 0票数 0

我需要修改json (Map)。需要更新值、添加新值等等。但是问题是:如果我试图添加(或更新)的新值不是相同类型的实际值或字符串,它会抛出一个异常.

是否有方法插入或修改具有新类型值的json?

(在C#和newtonsoft中,或者在NodeJs中,我可以轻松地完成它)

这是再现问题的代码:

代码语言:javascript
复制
void main() {
  Map<String, dynamic> _json = {
    'key 1': 'value 1',
    'key 2': 'value 2',
    'key 3': {
      'key 3_1': {
        'key 3_1_1': 'value 3.1.1'
      }
    },
    'key 4': {
      'key 4.1': {
        'key 4.1.1': 'value 4.1.1'
      }
    },
    'key 5': 4,
    'key 6': true
  };
  
  (_json['key 3']['key 3_1'] as Map<String, dynamic>).update('key 3_1_1', (v) => '4'); // <---- this works
  (_json['key 3']['key 3_1'] as Map<String, dynamic>).update('key 3_1_1', (v) => 4); // <--- this does not work
  (_json['key 3']['key 3_1'] as Map<String, dynamic>).putIfAbsent('key 3_1_2', () => 4); // <--- this does not work too
  (_json['key 3']['key 3_1'] as Map<String, dynamic>).putIfAbsent('key 3_1_2', () => {'a': '4'}); // <--- this does not work
  print(_json);
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-05 10:10:16

原因是您原来的"JSON“映射文字是输入的。例如,子表达式

代码语言:javascript
复制
      {
        'key 3_1_1': 'value 3.1.1'
      }

具有Map<String, String>类型,因为这是元素的明显类型,并且没有上下文类型覆盖它(如果有的话,上下文类型只是dynamic )。

如果您将原始代码编写为:

代码语言:javascript
复制
Map<String, dynamic> _json = {
    'key 1': 'value 1',
    'key 2': 'value 2',
    'key 3': <String, dynamic>{
      'key 3_1': <String, dynamic>{
        'key 3_1_1': 'value 3.1.1'
      }
    },
    'key 4': <String, dynamic>{
      'key 4.1': <String, dynamic>{
        'key 4.1.1': 'value 4.1.1'
      }
    },
    'key 5': 4,
    'key 6': true
  };

您将获得与JSON相同的效果--编码,然后解码(而且效率更高)。

票数 1
EN

Stack Overflow用户

发布于 2022-03-04 12:02:04

我找到办法了!

只需导入省道:在任何json操作之前转换并添加这一行:

代码语言:javascript
复制
_json = json.decode(json.encode(_json));

我不知道为什么,但是将json内联转换与使用.创建一个新的json不同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71350768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档