颤振:从json获取数据

颤振:从json获取数据,json,flutter,dart,Json,Flutter,Dart,当我打印出print(response.body)时,我得到的json数据如下: { "kind": "youtube#videoListResponse", "etag": "BaEhOMCS17JNvG29RdTWOMEWXcM", "items": [ { "kind": "youtube#video", &

当我打印出print(response.body)时,我得到的json数据如下:

{
  "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文档:

您尝试执行的操作称为
json反序列化/json解码

现在我们有了
映射中的值
。您可以通过
数组循环,获得
标题的
值:

for (int i = 0; i < parsed["items"].length; i++) {
  print(parsed["items"][i]["snippet"]["title"]);
}
for(int i=0;i


这是一个关于如何反序列化json的FLART文档:

Code updated…然后:
var data=myData['flatter'];
并运行上面的代码…@Uni是对的,您的数据应该首先用jsonDecode解析。是的,这很有效!代码更新了…然后:var data=myData['flatter']
并运行上面的代码…@Uni是正确的,您的数据应该首先使用
jsonDecode
进行分析。是的,这是有效的!我收到了这个错误:未处理的异常:NoSuchMethodError:Class“\u InternalLinkedHashMap”没有带有匹配参数的实例方法“cast”。@DarylWong您可以删除
.cast()
。我更新了我的答案,得到一个空值value@DarylWong糟糕的是,我没有看到json的代码片段部分。我已经更新了答案。这也有效,thx…我收到了以下错误:未处理的异常:NoSuchMethodError:类“\u InternalLinkedHashMap”没有具有匹配参数的实例方法“cast”。@DarylWong您可以删除
.cast()
。我更新了我的答案,得到一个空值value@DarylWong我的错,我没有看到你的json的片段部分。我已经更新了我的答案。这也有效,谢谢。。。