【问题标题】:Serializing JSON from SpecFlow table从 SpecFlow 表中序列化 JSON
【发布时间】:2022-01-12 01:58:54
【问题描述】:

我有一个与 specflow 表中的 JSON 序列化有关的问题。 我在规范流功能文件中有以下步骤:

当用户使用数据发起交易时:

|  Key          |  Value              |
| --------------|---------------------| 
|Merchant       |  TestMerchant       |
|Shop           |  TestShop           |
|Currency       |  USD                |
|Amount         |  10.00              |
|User.ID        |  Test_User_01       |
|User.FirstName |  Test_User_FirstName|
|User.LastName  |  Test_User_LastName |

我有两个模型,如下所示:

 class User
    {
      public string ID {get; set;}
      public string FirstName {get; set;}
      public string LastName {get; set;}   
    }

 class TransactionReq
    {
      public string Merchant {get; set;}
      public string Shop {get; set;}  
      public string Currency {get; set;}  
      public decimal Amount {get; set;}  
      public User User {get; set;} //<--
    }

[When(@"用户使用数据发起交易:")]

public void UserInitiatesTransaction(Table table)
{
    var transactionData = table.CreateInstance<TransactionReq>();
    //this is part of the code in the step
}

在步骤定义中,我使用辅助助手方法从表中获取数据,显然辅助助手没有感觉并且不映射用户数据。我想将数据序列化为 JSON,如下所示。

 {
       "Merchant":"TestMerchant",
       "Shop":"TestShop",
       "Amount":10.00,
       "Currency":"EUR",
       "User":{
          "Id":"Test_User_01",
          "FirstName":"Test_User_FirstName",
          "LastName":"Test_User_LastName",
       }
    }

您能否给我一些方法建议,Newtonsoft 是否包含用于从表或字典序列化为 json 的资源,具有像我上面描述的表结构?

【问题讨论】:

    标签: c# json bdd specflow createinstance


    【解决方案1】:

    你可以试试这个代码

    using Newtonsoft.Json;
    
    var transactionData = table.CreateInstance<TransactionReq>();
    
    var json = JsonConvert.SerializeObject(transactionData);
    

    在 Visual Studio 中测试过,这是结果

    {
      "Merchant": "TestMerchant",
      "Shop": "TestShop",
      "Currency": "USD",
      "Amount": 10.00,
      "User": {
        "ID": "Test_User_01",
        "FirstName": "Test_User_FirstName",
        "LastName": "Test_User_LastName"
      }
    }
    

    【讨论】:

    • 是的,这正是我上面描述的内容,但不能按照您建议的方式工作。
    猜你喜欢
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 2019-04-05
    • 1970-01-01
    • 2016-05-30
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    相关资源
    最近更新 更多