如何从 HttpClient 解析 JSON 字符串?

2024-04-08

我通过调用外部 API 获取 JSON 结果。

        HttpClient client = new HttpClient();
        client.BaseAddress = new Uri(url);
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        HttpResponseMessage response = client.GetAsync(url).Result;

        if (response.IsSuccessStatusCode)
        {
            var result  = response.Content.ReadAsStringAsync().Result;
            var s = Newtonsoft.Json.JsonConvert.DeserializeObject(result);
            return "Success";
        }
        else
        {
            return "Fail";
        }

结果一致var s = Newtonsoft.Json.JsonConvert.DeserializeObject(result);我得到的是这样的:

 {{
  "query": "1",
  "topScoringIntent": {
    "intent": "1",
    "score": 0.9978111,
    "actions": [
      {
        "triggered": false,
        "name": "1",
        "parameters": []
      }
    ]
  },
  "entities": [],
  "dialog": {
    "prompt": "1",
    "parameterName": "1",
    "parameterType": "1::1",
    "contextId": "11",
    "status": "1"
  }
}}

我在用HttpClient。我在访问时遇到困难prompt核心价值。我想要得到prompt from dialog。我怎么才能得到它?


我想到了三种方法。

  1. 假设json是一致的并且响应的结构不会经常改变,我会使用像json2csharp http://json2csharp.com/ or jsonutils http://jsonutils.com/创建 C# 类。

    然后调用:

    {GeneratedClass} obj = JsonConvert.DeserializeObject<{GeneratedClass}>(result);
    

    这将为您提供一个可以使用的强类型对象。

  2. 您可以跳过类生成并使用动态对象:

    dynamic obj = JsonConvert.DeserializeObject<dynamic>(result)
    

    并访问属性,例如:

    obj.dialog.prompt;
    
  3. 您可以使用 JObject 并使用字符串访问其属性

    JObject obj = JsonConvert.DeserializeObject(result);
    
    obj["dialog"]["prompt"]
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 HttpClient 解析 JSON 字符串? 的相关文章

随机推荐

  • 动态启动和关闭 KafkaListener 只是为了在会话开始时加载以前的消息

    我有一个让 kafkalistener 从头开始 读取消息的工作代码 offset 0 一个主题 始终运行 对于我的用例 消息传递 我需要两件事 始终捕获特定主题 分区的新消息 该消费者始终在运行 并发送到前端 websocket stom
  • 使用 Go 处理水印图像

    我想找一些关于制作水印图像的例子 用Go语言写的 我需要一个 PNG 图像作为水印图像 可以应用于其他格式 PNG GIF JPEG 等 我希望你能给我一些实际的例子 正如已经提到的 您可以使用 image draw 包为图像添加水印 这是
  • 圆圈内的文本 UILabel Swift 3

    我知道这个问题在 SO 中被问了很多次 但我在 Swift 中找不到可靠的答案 甚至一般来说也找不到一个好的答案 我知道这对于 UITextField 是可能的 但 UILabel 是我想使用的 我问是否有人遇到过 UILabel 的扩展
  • 如何更改 Android O / Oreo / api 26 应用程序语言

    我想更改应用程序的语言 并且在 API 26 之前都可以正常工作 对于 api gt 25 我把Locale setDefault Locale Category DISPLAY mynewlanglocale before setCont
  • Android Chromium WebView 崩溃

    我有一个在 Android 5 1 1 设备上运行的应用程序 该应用程序有一个 webview 48 0 2564 106 该视图保持 24 7 有时应用程序会崩溃 因为 chromium webview 有未捕获的异常 最新版本的webv
  • 如何将元素推入数组的某个值之后[重复]

    这个问题在这里已经有答案了 所以我们都知道array push工作原理如下 所以结果是 Array 0 gt red 1 gt green 2 gt blue 3 gt yellow 但现在我需要知道如何附加blue and yellow在
  • 涉及伪类first-child和dropcap的CSS选择器

    我需要格式化类似于下面的 HTML 基本上一个报价是optional 我需要将正文段落的第一个字母大写
  • 将应用程序背景设置为与主屏幕壁纸相同

    我想将应用程序的背景设置为与主屏幕壁纸相同 如何获取activity xml中的主屏幕壁纸 我可以这样做吗 Use final WallpaperManager wallpaperManager WallpaperManager getIn
  • 如何在scala中使用java代理

    我有一个 Iface 接口 它有两个用 java 编写的方法 该接口是 Zzz 类的内部接口 我已经用 scala 编写了调用处理程序 然后我尝试在 scala 中创建一个新的代理实例 如下所示 val handler new ProxyI
  • 元素不会出现在 IE7 中,直到我通过开发人员工具栏编辑它

    这个让我难住了 我的页面上有一个具有绝对位置的元素 位于具有相对位置的容器内 在除 IE7 之外的所有浏览器中 它都显示在正确的位置 没有任何问题 在 IE7 中 该元素不会出现 直到我添加或编辑其任何 CSS 属性在开发者工具栏的 属性
  • 在 javascript 中解析 JSON 以获得多个 JSON 对象 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 应该是一个很常见的答案 但我还没有找到 使用客户端 JavaScript 我的客户端收到一些 JSON 字符串 response id1 v
  • 重新排列数组索引 Eloquent Laravel

    从 laravel eloquent 数组中删除元素后出现错误 物业有房间 foreach property gt rooms as key gt room if room gt type 1 and type 1 and room gt
  • Jquery 验证 - 在急切验证期间显示验证摘要?

    是否可以使用 jquery 验证来显示验证摘要 我正在使用 MVC 3 如果重要的话 并且当每个元素失去焦点时我的表单会进行验证 myform validate onfocusout function element element val
  • Google 负载均衡器 www 到非 www 重定向

    我在使用 google 负载均衡器进行 www 到非 www 重定向时遇到一些困难 目前我的 HTTP gt https 工作没有问题 但是 我还没有真正看到任何关于其工作原理的最新文档 我的负载均衡器设置可以运行 App Engine A
  • Pharo Smalltalk 中的 For 循环 for 数组

    我正在尝试创建一个包含随机数 仅 0 或 1 的数组 但是当我运行它时 它只打印以下内容 遇到语句列表结尾 gt 这是我的代码 GenList lista lista Array new 31 1 to 30 do i lista at i
  • 导入pygame失败

    我已经从这里安装了 python 2 6 6 和 pygame 2 6 http pygame org ftp pygame 1 9 1 win32 py2 6 msi http pygame org ftp pygame 1 9 1 wi
  • 如何统一使用两个 Vector3 点创建一条线?

    我知道存在一些函数 如 lineRenderer 等 但我想使用两个点 以 Vector3 形式 在场景中创建一条直线 我不想使用任何键或使用鼠标来绘制线条 我只想在触发某些事件时或单击播放按钮后看到场景中的线条 谁能帮我 For crea
  • 如何设置 TabControls TabItem 标题 FontSize

    我有一个 TabControl 其样式可以更改 TabItem 标题的 FontSize 当我数据绑定 ItemsSource 时 只有标题受 FontSize 影响 但是 当我在另一个 TabControl 上使用相同的样式并在 XAML
  • Terraform 的 for_each 中的迭代器功能是什么?

    我正在尝试理解iterator的特点是for each在 Terraform 0 12 中 这docs https www terraform io docs configuration expressions html say 迭代器 T
  • 如何从 HttpClient 解析 JSON 字符串?

    我通过调用外部 API 获取 JSON 结果 HttpClient client new HttpClient client BaseAddress new Uri url client DefaultRequestHeaders Acce