如何从响应数据中获取元素值到 json
How to get element value from response data to json
我正在编写一个 API 自动化测试,非常感谢 RestSharp.Any 的帮助!
我从响应中获取数据值并且我需要将一些值写入我的 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() 方法访问“Query”的属性
var children = fsQuery.Children();
最好实现一个 class 来封装您的响应并使用 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
我正在编写一个 API 自动化测试,非常感谢 RestSharp.Any 的帮助! 我从响应中获取数据值并且我需要将一些值写入我的 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() 方法访问“Query”的属性
var children = fsQuery.Children();
最好实现一个 class 来封装您的响应并使用 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