Разбор JSON на строковые ключи и значения

Есть ли способ разобрать JSON как Map<String, String> вместо Map<String, dynamic> при использовании json.decode Дарта.

Например, с JSON:

{
 'a': 2,
 'b': 'c'
}

Он будет разбираться на:

{
 'a': '2',
 'b': 'c'
}
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
0
0
95
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

К сожалению нет. Код для декодирования Map начинается с Map<String, dynamic> и добавляет значения по мере их чтения, поэтому нет возможности сделать тип значения более конкретным.

Посмотрите на них другие варианты:

  • Создайте новый Map с правильным типом из любой исходной карты: https://api.dartlang.org/stable/2.1.0/dart-core/Map/Map.from.html - вы платите единовременную плату за копирование значений.
  • Создайте безопасный для типов вид существующего Map - https://api.dartlang.org/stable/2.1.0/dart-core/Map/cast.html - без затрат на копирование, но вы оплачиваете накладные расходы на перенос / преобразование при каждом доступе к исходной карте

Поскольку синтаксический анализ 2 без кавычек в виде строки будет нарушением спецификации JSON, синтаксический анализ JSON не сделает этого за вас. Похоже, вам нужно преобразовать карту. Вы можете сделать: var jsonMap = jsonDecode(...); Map<String, String> myMap = Map.fromEntries(jsonMap.entries.map((e) => MapEntry(e.key, "${e.value}")));.

lrn 15.01.2019 19:27

Другие вопросы по теме