颤振:从json获取数据
当我打印出print(response.body)时,我得到的json数据如下:颤振:从json获取数据,json,flutter,dart,Json,Flutter,Dart,当我打印出print(response.body)时,我得到的json数据如下: { "kind": "youtube#videoListResponse", "etag": "BaEhOMCS17JNvG29RdTWOMEWXcM", "items": [ { "kind": "youtube#video", &
{
"kind": "youtube#videoListResponse",
"etag": "BaEhOMCS17JNvG29RdTWOMEWXcM",
"items": [
{
"kind": "youtube#video",
"etag": "jUDRGv06hm-CRn0BiOCPfDAB_ww",
"id": "zVGjcT-w2R0",
"snippet": {
"publishedAt": "2021-02-20T16:00:32Z",
"channelId": "UCCkcCJBEKZ0sLKVYxlN1fkw",
"title": "SHES GONE | Little Nightmares 2 Gameplay Walkthrough Part 5 THE END",
"description": "The Scariest of The Littlest of Nightmares\nor just a scary little game \nThis Is The Ending Of Little Nightmares 2",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/zVGjcT-w2R0/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/zVGjcT-w2R0/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/zVGjcT-w2R0/hqdefault.jpg",
"width": 4<…>
{
“种类”:“youtube#videoListResponse”,
“etag”:“BaEhOMCS17JNvG29RdTWOMEWXcM”,
“项目”:[
{
“种类”:“youtube视频”,
“etag”:“jUDRGv06hm-CRN0BioPFDAB_ww”,
“id”:“zVGjcT-w2R0”,
“片段”:{
“发布日期”:“2021-02-20T16:00:32Z”,
“信道ID”:“UCCKCCJBEKZ0SLKVYXLN1FWW”,
“标题”:“她走了|小噩梦2游戏性演练第5部分结束”,
“描述”:“最恐怖的小噩梦\n也不仅仅是一个可怕的小游戏\n这是小噩梦2的结局”,
“缩略图”:{
“默认值”:{
“url”:”https://i.ytimg.com/vi/zVGjcT-w2R0/default.jpg",
“宽度”:120,
“高度”:90
},
“中等”:{
“url”:”https://i.ytimg.com/vi/zVGjcT-w2R0/mqdefault.jpg",
“宽度”:320,
“高度”:180
},
“高”:{
“url”:”https://i.ytimg.com/vi/zVGjcT-w2R0/hqdefault.jpg",
“宽度”:4
从这个json对象,我如何从这个json数据中获取标题。您的数据不完整,即使我假设起始数据类型是
Map
,那么这个片段应该可以工作:
var data = {"kind": "...", "etag": "...", "items": [...]};
var title = (((data['items'] as List).first as Map)['snippet'] as Map)['title'];
您的数据不完整,因此我假设起始数据类型为
Map
,那么此代码段应该可以工作:
var data = {"kind": "...", "etag": "...", "items": [...]};
var title = (((data['items'] as List).first as Map)['snippet'] as Map)['title'];
您尝试执行的操作称为
json反序列化/json解码
。您需要将json字符串解码为映射
:
现在我们有了映射中的值
。您可以通过项
数组循环,获得标题的
值:
for (int i = 0; i < parsed["items"].length; i++) {
print(parsed["items"][i]["snippet"]["title"]);
}
for(int i=0;i
下面是一个关于如何反序列化json的flatter文档:您尝试执行的操作称为
并运行上面的代码…@Uni是正确的,您的数据应该首先使用json反序列化/json解码 现在我们有了
var data=myData['flatter'];并运行上面的代码…@Uni是对的,您的数据应该首先用。您可以通过映射中的值
数组循环,获得项
值:标题的
for (int i = 0; i < parsed["items"].length; i++) { print(parsed["items"][i]["snippet"]["title"]); }
for(int i=0;i
这是一个关于如何反序列化json的FLART文档:Code updated…然后:jsonDecode
解析。是的,这很有效!代码更新了…然后:var data=myData['flatter']
jsonDecode
进行分析。是的,这是有效的!我收到了这个错误:未处理的异常:NoSuchMethodError:Class“\u InternalLinkedHashMap”没有带有匹配参数的实例方法“cast”。@DarylWong您可以删除.cast()
。我更新了我的答案,得到一个空值value@DarylWong糟糕的是,我没有看到json的代码片段部分。我已经更新了答案。这也有效,thx…我收到了以下错误:未处理的异常:NoSuchMethodError:类“\u InternalLinkedHashMap”没有具有匹配参数的实例方法“cast”。@DarylWong您可以删除.cast()
。我更新了我的答案,得到一个空值value@DarylWong我的错,我没有看到你的json的片段部分。我已经更新了我的答案。这也有效,谢谢。。。