无法从颤振中的 jsonDecoded 变量中提取密钥
Posted
技术标签:
【中文标题】无法从颤振中的 jsonDecoded 变量中提取密钥【英文标题】:Failed to extract the keys from a jsonDecoded variable in flutter 【发布时间】:2020-10-03 04:48:15 【问题描述】:我是一个新手。我正在尝试从 jsonDecoded 变量中获取所有键。我已经尝试了我所知道的一切来获得这些钥匙。但我做不到。
所以我的问题是如何以最简单和最短的方式从 jsonDecoded 值中获取所有键?
这是我的代码:
Future<String> getData() async
var response = await http.get(
Uri.encodeFull(
"https://my-json-server.typicode.com/dipcse07/demoJSON/db"),
headers: "Accept": "application/json");
//print(response.body);
print('tapped');
setState(()
data = jsonDecode(response.body.toString());
collegeDataLenght = data['CollegeName1'].length;
count = collegeDataLenght;
teachersInfo = data['CollegeName1'];
print(teachersInfo[0]['avatarImage']);
);
*****需要从data
**获取所有密钥
我从我的 api 链接获得的数据是
"CollegeName1":[
"teacherName":"Md Sazid hasan dip",
"teacherID":"2345",
"avatarImage":"url",
"address":"9/2, shenbari Road, Shanki Para Bazar Mymensingh",
"status":"Active",
"joinDate":"date",
"resignDate":"present"
,
"TeacherName":"Talha Azadi",
"teacherID":"2345",
"avatarImage":"url",
"address":"9/2, shenbari Road, Shanki Para Bazar Mymensingh",
"status":"Active",
"joinDate":"date",
"resignDate":"present"
],
"CollegeName2":[
"teacherName":"Md Sazid hasan dip",
"teacherID":"2345",
"avatarImage":"url",
"address":"9/2, shenbari Road, Shanki Para Bazar Mymensingh",
"status":"Active",
"joinDate":"date",
"resignDate":"present"
,
"TeacherName":"Talha Azadi",
"teacherID":"2345",
"avatarImage":"url",
"address":"9/2, shenbari Road, Shanki Para Bazar Mymensingh",
"status":"Active",
"joinDate":"date",
"resignDate":"present"
]
【问题讨论】:
你只想要“CollegeName1”和“CollegeName2”吗? 是的。如果可能所有的键 【参考方案1】:您解析的 json 将返回一个 Map
,其中有一个您可以使用的 .keys
属性:
void main()
final parsedJson = jsonDecode(json) as Map<String, dynamic>;
print(parsedJson.keys);
【讨论】:
jsonDecode()。在 ide 建议中没有显示任何 .key 功能.. 我正在使用 android studio 和我的环境详细信息:版本:1.0.0+1 环境:sdk:">=2.1.0 这是因为Dart无法确定解码后得到什么样的数据,因为JSON允许多种类型。所以 Dart 只能将类型设置为dynamic
,意思是“好的,我不知道你想要什么,但让我们看看它在程序运行时是否有效”。这就是我进行演员 as List<String>
的原因(只是为了确定类型,因为如果结果不是 List<String>
,程序会崩溃。但是因为 JSON 输入是动态的,所以你不会得到太多帮助IDE。
我已经更新了答案以使其更有意义,并且还允许您从 parsedJson
的 IDE 中获得一些建议。
请注意,Dart 再次无法对 Map 中值的类型做出一般性说明,因此此处的类型将再次为 dynamic
。 :)
那行得通.!!..谢谢伙计..我什至无法在 dart convert api.dart.dev/stable/2.8.4/dart-convert/… 的文档中找到它,这就是我感到困惑的原因..以上是关于无法从颤振中的 jsonDecoded 变量中提取密钥的主要内容,如果未能解决你的问题,请参考以下文章
无法从 JSONDecoder 获取数据,没错,是我编的结构?