android - 如何在 dart/flutter 中提取 JSON 子数据

标签 android json android-studio flutter dart

我想提取 queryResult 的子值,即。 “你好。我是聊天机器人那么我们开始吧?”从 JSON 使用 flutter

最终responseJson = json.decode(response.body);

print("数据\n ${responseJson['queryResult']}");

JSON 数据 ===>

{  
   "responseId":"123456789",
   "queryResult":{  
      "queryText":"Hello",
      "action":"input.welcome",
      "parameters":{  

      },
      "allRequiredParamsPresent":true,
      "fulfillmentText":"Greetings! How can I assist?",
      "fulfillmentMessages":[  
         {  
            "text":{  
               "text":[  
                  "Hello there. I am chat bot So shall we get started?"
               ]
            }
         },
         {  
            "quickReplies":{  
               "quickReplies":[  
                  "Yes",
                  "No"
               ]
            }
         }
      ],
      "outputContexts":[  
         {  
            "name":"xyz",
            "lifespanCount":5
         }
      ],
      "intent":{  
         "name":"xyz",
         "displayName":"Default Welcome Intent"
      },
      "intentDetectionConfidence":1,
      "diagnosticInfo":{  
         "webhook_latency_ms":5
      },
      "languageCode":"en"
   },
   "webhookStatus":{  
      "message":"Webhook execution successful"
   }
}

我无法使用 queryResult 读取子数据

final responseJson = json.decode(response.body);
print("DATA \n ${responseJson['queryResult']}");

最佳答案

如果你想获得特定的行,你可以通过这种方式获得它,但是为了更多的使用,序列化 json 是明智的,就像这里:https://flutter.dev/docs/development/data-and-backend/json

print("DATA \n ${responseJson['queryResult']['fulfillmentMessages'][0]['text']['text'][0]}");

为了更容易理解路径:

print("DATA \n ${
      responseJson['queryResult']
        ['fulfillmentMessages'][0]
          ['text']
            ['text'][0]
      }"
 );

与您的代码类似的完整代码:

import 'dart:convert';

final responseBody = '{"responseId":"123456789","queryResult":{"queryText":"Hello","action":"input.welcome","parameters":{},"allRequiredParamsPresent":true,"fulfillmentText":"Greetings! How can I assist?","fulfillmentMessages":[{"text":{"text":["Hello there. I am chat bot So shall we get started?"]}},{"quickReplies":{"quickReplies":["Yes","No"]}}],"outputContexts":[{"name":"xyz","lifespanCount":5}],"intent":{"name":"xyz","displayName":"Default Welcome Intent"},"intentDetectionConfidence":1,"diagnosticInfo":{"webhook_latency_ms":5},"languageCode":"en"},"webhookStatus":{"message":"Webhook execution successful"}}';

void main() {
  final Map<String, dynamic> responseJson = json.decode(responseBody);

  print("DATA \n ${
      responseJson['queryResult']
        ['fulfillmentMessages'][0]
          ['text']
            ['text'][0]
      }"
 );
}

关于android - 如何在 dart/flutter 中提取 JSON 子数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57656552/

相关文章:

java - 为什么 Butterknife 生成的 R2 文件的所有资源都具有相同的整数值 0x0?

android - 在LinearLayout中保持textview的高度

android - smackx 无法登录到 ejabberd socketexception 发送失败管道损坏

json - 将 geoJSON 对象直接加载到谷歌地图 v3

android - 在 com.android.build.gradle.internal.api.DefaultAndroidSourceSet 类型的源集主上找不到参数 [] 的方法 bitwiseNegate()

Android studio 无法安装 - 无法获取 addons_list-2.xml

java - 如何显示在新 Activity 中拍摄的图像

javascript - 如何在 javascript 中从 json 中获取行或单元格?

arrays - 在 NodeJS 中向数组 mongoose 中插入元素创建对象

android - Android应用程式ActionBarSherlock整合错误