如何从响应数据中获取元素值到 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