【发布时间】:2023-03-03 09:04:29
【问题描述】:
如何在 C# 中将属性或变量名称声明为 fg+?
public string fg+ { get; set; }
我收到fg+ 作为来自 JSON 的响应中的字段"fg+": "103308076644479658279"。
我正在使用一个类对其进行反序列化。如何从 JSON 中读取?
【问题讨论】:
-
@ChrisCirefice:希望使用
obj["key"]语法而不是obj.key访问值的人。 -
@dan04 当然可以,但是如果您使用诸如 Google GSON 之类的 JSON 库将 JSON 映射到 Java 对象或用于 C# 的 Json.NET,那么您通常会遇到很多麻烦没有明显原因的奇怪异常。是的,JSON 键可以是字符串,但这不应阻止创建要使用的 JSON 的人考虑谁必须解析它。在我看来,作为标识符的东西最好避免使用特殊符号。除非我故意惹恼别人,否则我永远不会创建如此奇怪的 JSON。
-
@sleblanc 根据我使用 JSON 解析库的经验,它完全取决于您的目标消费者。例如,在使用 Gson Java 库将 JSON 解析为 Java 对象时,使用名为
end的 JSON 键不会有问题,因为它不是 Java 关键字。但是,您不能将 Java 变量命名为for,因为它是循环的关键字。诚然,像 Gson 这样的大多数库都允许覆盖键,因此您可以拥有一个名为forDuration的 Java 变量,对应于 JSON 键for,但如果它们很容易避免,为什么还要潜在地导致问题呢? -
这听起来像是糟糕的设计。当我使用编码方案时,我不应该考虑编写解析器的语言规则。将 JSON 字段直接映射到变量听起来是一个非常糟糕的决定。