序列化但不反序列化XML,JSON和(特别是)YAML中的字段/属性?

时间:2018-06-17 11:38:48

标签: c# json xml serialization yaml

我有一组包含字段和对象的对象。需要在序列化输出中检查但在反序列化时不能读回的属性。

这纯粹是为了调试/确认目的。我们正在创建数百个文件,我想通过添加补充信息来检查序列化是否正确发生。我不希望在反序列化期间读取这些补充信息 - 事实上它是不可能的。

我还需要在不同的序列化格式中使用相同的工具来完成此操作,因此我们可以评估哪一种最佳。我有一个通用的序列化方法,其中所需的格式作为参数传递,因此不要为每种不同的格式提供任何过于混乱或错综复杂的内容。

我一直在寻找相关主题的各种事情 - 主要是与相反的事情有关:在序列化过程中不写某些字段。那里的东西似乎很复杂,有时很骇客。

Is it possible to serialize an object differently to deserializing it using Json.Net?

JsonConvert .NET Serialize/Deserialize Read Only

Serialize Property, but Do Not Deserialize Property in Json.Net

此外,似乎任何方法在序列化格式之间都不一致。与[*Ignore]属性不同,没有[*SerializeOnly]属性(其中* = JSON,XML,YAML)。

是否有一种简单的方法可以跨这些序列化格式执行此操作?是否有一系列属性可以提供帮助?或者在每种情况下都是特殊的和黑客的吗?

1 个答案:

答案 0 :(得分:0)

我已经测试并将其应用于XML序列化,但它适用于我:

当我想要一个属性被序列化但没有回读时,我只是声明一个空的setter。

Traceback (most recent call last):
  File "C:\Users\ben_s\Desktop\Nike Account Generator.py", line 19, in <module>
    button = browser.find_element_by_class_name("nsg-button.nsg-grad--nike-orange.yes-button.cookie-settings-button.js-yes-button")
  File "C:\Python\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 557, in find_element_by_class_name
    return self.find_element(by=By.CLASS_NAME, value=name)
  File "C:\Python\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 957, in find_element
    'value': value})['value']
  File "C:\Python\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 314, in execute
    self.error_handler.check_response(response)
  File "C:\Python\Python36\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"class name","selector":"nsg-button.nsg-grad--nike-orange.yes-button.cookie-settings-button.js-yes-button"}
  (Session info: chrome=67.0.3396.87)
  (Driver info: chromedriver=2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),platform=Windows NT 10.0.17134 x86_64)