从 SpecFlow 表中序列化 JSON

Posted

技术标签:

【中文标题】从 SpecFlow 表中序列化 JSON【英文标题】:Serializing JSON from SpecFlow table 【发布时间】: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 的资源,具有像我上面描述的表结构?

【问题讨论】:

【参考方案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"
  

【讨论】:

是的,这正是我上面描述的内容,但不能按照您建议的方式工作。

以上是关于从 SpecFlow 表中序列化 JSON的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio 中反序列化 JSON 文件时出错

如何从 django 中的两个不同表中返回数据?

反序列化 JSON 会在表中创建另一个属性并且无法正确返回数据

在javascript中反序列化json对象

datetime.datetime 不是 JSON 可序列化的 [重复]

从 JSON 反序列化 java 枚举