将JSON DESERIALIATIATION KEYS> decouse json>来自模型的属性映射。这可能吗?

发布于 2025-01-22 10:59:22 字数 850 浏览 0 评论 0 原文

使用net 6和 system.text.json 我有:

public class Sensor {
  [JsonPropertyName("InstanceId")]
  public Int32 Id { get; set; }
  [JsonPropertyName("SensorName")]
  public String Name { get; set; }
  [JsonPropertyName("IsValid")]
  public Boolean Valid { get; set; }
}

我需要从JSON中解析传感器,因此我正在使用:

var result = JsonSerializer.Deserialize<Sensor>(json);

使用 jsonpropertyname 是因为传感器属性名称不匹配JSON键。

我从不同的API中获取传感器数据,每个传感器都使用不同的键。

我可以使用每个API的模型: sensormodelapi1 sensormodelapi2 与不同的 jsonpropertyname 值。

然后,我将每个传感器模型映射到传感器类。

问题< / strong>

是否可以将键 /属性与传感器类映射?

而不是使用 JSONProperTyname 我还将为每个API绘制其他策略,以避免为每个API具有感官模型。

这有意义吗?

Using Net 6 and System.Text.Json I have:

public class Sensor {
  [JsonPropertyName("InstanceId")]
  public Int32 Id { get; set; }
  [JsonPropertyName("SensorName")]
  public String Name { get; set; }
  [JsonPropertyName("IsValid")]
  public Boolean Valid { get; set; }
}

I need to parse Sensors from Json so I am using:

var result = JsonSerializer.Deserialize<Sensor>(json);

The use of JsonPropertyName is because Sensor properties names don't match Json keys.

I am getting Sensors data from different APIs and each one uses different keys.

I could use a Model per API: SensorModelApi1, SensorModelApi2 with different JsonPropertyName values.

Then I would map each Sensor Model to Sensor class.

Question

Would be possible to decouple the Keys / Properties mapping from Sensor class?

Instead of using JsonPropertyName I would have other strategy for mapping for each API avoiding having a SensorModel for each API.

Does this make sense?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

-残月青衣踏尘吟 2025-01-29 10:59:22

您可以尝试使用Newtonsoft JSON软件包,似乎[JSONPROPERTY]可以解决您的问题。
文档:

You can try to use Newtonsoft json package instead, seems that [JsonProperty] will fix your issue.
Docs: https://www.newtonsoft.com/json/help/html/serializationattributes.htm

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文