c# - 如何从响应数据中获取元素值到 json
问题描述
我正在使用 RestSharp 编写 API 自动化测试。任何帮助都将不胜感激!我正在从响应中获取数据值,并且我需要将几个值写入我的 json 文件(我将用于另一个测试,将它们作为一个主体)。我设法从 JArray 中获得了 1 个值,但我还需要 2 个值,但我不知道该怎么做。我附上了我的 api 测试代码和从响应中获得的数据 + 我设法写入我的 json 文件的数据。
我设法获得的值:FsNumber(将其声明为 FinancialNumber)。我需要添加到 json 中:subjectName + subjectCode(它们将被声明为 companyName/companyCode)。如何使用 SubjectName/SubjectCode 访问“查询”列表?
测试
var queryResult = client.Execute<object>(request);
var data = JsonConvert.SerializeObject(queryResult.Data);
var jsonParse = JToken.Parse(data);
var fsObject = jsonParse.Value<JToken>("FinanceReportList");
var fsArray = fsObject.Value<JArray>("List");
foreach (var fs in fsArray)
{
var cfn = fs.Value<string>("FsNumber");
var queryObject = new DataQuery
{
financialNumber = cfn,
};
var queryObjectString = JsonConvert.SerializeObject(queryObject);
File.WriteAllText(@"C:\Users\TestAPI\myJsonWithValues.json", queryObjectString);
}
我从回复中得到的数据:
{
"RequestDate": "2021-07-16",
"Message": "Active",
"ProductNumber": 666,
"Language": "EN",
"RequestId": "reqID666",
"Query": {
"SubjectCode": "MY-SUBJECT",
"SubjectName": "MY-NAME"
},
"FinanceReportList": {
"List": [
{
"FsNumber": "MY-NUMBER",
"Year": 2021,
到目前为止,我设法将 FsNumber 获取到我的 myJsonWithValues.json 文件中,如下所示:
{"financialNumber":"MY-NUMBER","companyName":null,"companyCode":null}
我想要做的是,我的 json 应该看起来像
{"financialNumber":"MY-NUMBER","companyName":MY-NAME,"companyCode":MY-CODE}
解决方案
您必须访问“查询”对象
var fsQuery = jsonParse.Value<JToken>("Query")
并使用 Children() 方法访问“查询”的属性
var children = fsQuery.Children();
实现一个封装你的响应并使用 JsonConvert.Deserialize 反序列化它的类是一个好习惯,例如。
public class Account
{
public string Email { get; set; }
public bool Active { get; set; }
public DateTime CreatedDate { get; set; }
public IList<string> Roles { get; set; }
}
Account account = JsonConvert.DeserializeObject<Account>(json);
而不是使用 JObjects
推荐阅读
- java - 授予权限后如何录制屏幕
- python - 使用 cobra 进行优化时出现 ContainerAlreadyContains 错误
- html - 是否可以以编程方式在 Web 组件中插入元素?
- javascript - React Native:如何在 React Native 中发送 TextInput 的值?
- c# - 使用 GraphQLClient 包将 C# 客户端与 AWS AppSync 订阅和 IAM 身份验证集成
- html - 对齐问题:MacBook 上的 Safari 在屏幕的最右侧显示引导按钮
- mysql - phpMyAdmin 和 SQLBuddy 中的 SQL 查询问题
- excel - VBA 数据透视表筛选器运行时错误“1004”:应用程序定义或对象定义错误
- wordpress - Woocommerce 获取类似订单的订单商品
- java - Spring注入存储库与构造函数中的正常属性混合