使用 ReadAsAsync() 反序列化复杂的 Json 对象

2024-01-26

我想在我的 mvc 项目中使用 ReadAsAsync() 和 .net 4.0。结果为空。

如果我在地址栏输入 uri,chrome 中的结果为(标签名称已更改):

<ns2:MyListResponse xmlns:ns2="blablabla">
  <customerSessionId>xxcustomerSessionIdxx</customerSessionId>
  <numberOfRecordsRequested>0</numberOfRecordsRequested>
  <moreResultsAvailable>false</moreResultsAvailable>
  <MyList size="1" activePropertyCount="1">
    <MySummary order="0">
      <id>1234</id>
      <name>...</name>
      .
      .   
    </MySummary>
  </MyList>
</ns2:MyListResponse>

如果我在代码中使用该语句:

using (var client = new HttpClient())
{
     var response = client.GetAsync(apiUri).Result;
     var message = response.Content.ReadAsStringAsync().Result;

     var result1 = JsonConvert.DeserializeObject<MyListResponse>(message);
     var result2 = response.Content.ReadAsAsync<MyListResponse>().Result;
}

该消息采用字符串格式,如下所示"{\"MyListResponse\":{\"customerSessionId\"...}"对应的 json 对象为:

{"MyListResponse":
    {"customerSessionId":"xxcustomerSessionIdxx",
     "numberOfRecordsRequested":0,
     "moreResultsAvailable":false,
     "MyList":
        {"@size":"1",
         "@activePropertyCount":"1",
         "MySummary":
            {"@order":"0",
             "id":1234,
             "name":"...",
             .
             .
            }
        }
    }
 } 

result1 和 result2 的属性为 null 或默认值。类定义如下。我想将内容作为对象来读取,但我做不到。您有什么建议来解决这个问题?我究竟做错了什么?提前致谢。

public class MySummary
{
    public int @Order { get; set; }
    public string Id { get; set; }
    public string Name { get; set; }
    .
    .
}

public class MyList
{
    public int @Size { get; set; }
    public int @ActivePropertyCount { get; set; }
    public MySummary MySummary{ get; set; }
}

public class MyListResponse
{
    public string CustomerSessionId { get; set; }
    public int NumberOfRecordsRequested { get; set; }
    public bool MoreResultsAvailable { get; set; }
    public MyList MyList { get; set; }
}

我将一个新类定义为:

public class ResponseWrapper
{
    public MyListResponse MyListResponse { get; set; }
}

然后我用这个包装纸,

 var result1 = JsonConvert.DeserializeObject<ResponseWrapper>(message);
 var result2 = response.Content.ReadAsAsync<ResponseWrapper>().Result;

然后它起作用了。我只需要 MySummary 对象,但我应该编写更多的类来使其工作。

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

使用 ReadAsAsync() 反序列化复杂的 Json 对象 的相关文章

随机推荐

  • 批量消费骆驼kafka

    尽管遵循此处发布的示例 但我无法与卡夫卡骆驼消费者一起批量阅读 我是否需要对生产者进行更改 或者问题最有可能出在我的消费者配置上 有问题的应用程序利用卡夫卡骆驼组件 https camel apache org components 3 1
  • 如何检测潜在的溢出

    好的 考虑以下场景 public static bool TryGetNearestRationalNumber double target double precision out RationalNumber nearest imple
  • 遍历asp.net页面上的所有控件

    我正在使用 ascx 我需要迭代所有控件并选择每个 cssClass 属性设置为 required 的控件 我有以下代码 foreach Control masterControl in Page Controls if masterCon
  • 使用 knockout.js 从表单中获取或发送数据

    Knockout新手 同时也是前端设计师 所以我需要简单的谈谈 我有一个表格需要发送到数据库 然后从数据库中检索 请用非常简单的术语解释如何生成一个工作示例来说明保存和发布表单 来自淘汰赛教程 http knockoutjs com doc
  • 在 SQL Server 中将 Varchar 转换为时间

    如何转换时间格式 10 02 22 下午 转换为 SQL Server 日期时间格式 我有一列这样的数据 我从 CSV 文件导入此列 现在想要将其转换为日期时间格式 以便我能够使用日期时间函数 我希望能够将此列插入到具有正确日期时间格式的另
  • 部署后 Google App Engine 返回 HTTP 响应代码 403

    我已经完成了另一次部署 一切都很好 但完成应用程序后 我收到此错误 并且页面请求不断加载 我需要在 IAM 中配置一些东西吗 Java 11标准环境 h2 DB弹簧靴 来自 Google Cloud 的堆栈跟踪 java io IOExce
  • 如何使用 Reform 来预填充特色对象?

    例如 当用户单击 拍照 时 我们如何使用专门为该特色挑战设置的属性来预填充 create html erb 表单 就像为12天和做Tue Thu 我正在使用reform gem https github com apotonick refo
  • 如何增加角度5中matdialogbox的自动高度?

    uploadFiles void const dialogRef this dialog open AddNewFilesOrImagesComponent width 620px height 100 如果高度 100 UI 看起来像这样
  • c程序生成从1到n的二进制数

    我需要一个输出 例如如果数字是 5 则输出应该是 5 个二进制数直到 5 但从 1 开始 下面给出了示例 不使用数组即可完成 输入 5 输出 1 10 11 100 101 但我得到了 输出像 这输入 5 输出 1 11 11 111 11
  • 如何使用 Javascript 提交 POST 变量?

    所以我试图通过表单提交一个变量和变量的名称 我将按钮从提交切换为按钮 因为我需要额外的验证 无论如何 现在是按钮
  • 如何使用 Android 版 Twitter Kit 实现登录屏幕?

    我正在尝试使用新的 Twitter Kit 3 API 在我的自定义 Android 应用程序中实现 Twitter 功能 但我无法使其工作 我只是按照这个例子 https dev twitter com twitterkit androi
  • JQuery mouseup 在窗口外 – 可能吗?

    我正在努力完成一个基本的阻力 在 mousedown 上 项目开始拖动 但速度与鼠标不同 因此当鼠标位于窗口外部时我继续拖动 但如果鼠标不在页面上 我无法获取 mouseup 事件 我可以看到其他页面这样做 所以我知道这是可能的 感谢任何帮
  • Botframework V4:有关输入表单卡的问题

    你好 我有这张输入表格卡 它渲染正确 但我怎样才能得到它的结果 我怎样才能让机器人等待用户提交然后再继续下一步 放入stepContext NextAsync将自动触发下一步 但是删除它会导致错误 因为它需要返回一些东西 public In
  • _.仅当目标对象中存在属性时才分配

    我的需要是执行类似 assign 的操作 但前提是目标对象已经具有正在分 配的属性 可以将其想象为源对象可能具有一些可以贡献的属性 但也有一些我不想混合的属性 我从未使用过 assign 的回调机制 但尝试了以下方法 它 有效 但它仍然将该
  • 计算 constexpr 时抛出异常会发生什么?

    当计算常量表达式来初始化constexpr抛出异常是可能的 例如 下面是一个防止常量表达式的计算溢出的示例 include
  • bin2hex(random_bytes()) 根据输入有多少个字符?

    我使用以下代码为我的应用程序生成一个简单的 UID private function createUid bytes random bytes 128 uid bin2hex bytes return uid 通过这样做 结果是 creat
  • OpenCV Mat 元素类型及其大小

    我对 OpenCV Mat 元素类型感到困惑 这是来自文档 There is a limited fixed set of primitive data types the library can operate on That is ar
  • 获取 AWS S3 存储桶中对象的所有版本?

    我已在存储桶上启用对象版本控制 我想获取该存储桶内密钥的所有版本 但我找不到这样做的方法 如何使用 S3 API 来实现这一目标 所以 今天早上我遇到了这堵砖墙 事实证明 这件看似微不足道的事情做起来非常困难 您想要的 API 是获取桶对象
  • Elasticsearch 中不区分大小写的搜索

    我尝试在 elasticsearch yml 文件中创建一个条目来创建与要点中提到的相同的自定义分析器 https gist github com 1403902 https gist github com 1403902 但我收到以下错误
  • 使用 ReadAsAsync() 反序列化复杂的 Json 对象

    我想在我的 mvc 项目中使用 ReadAsAsync 和 net 4 0 结果为空 如果我在地址栏输入 uri chrome 中的结果为 标签名称已更改