c# - C# - 从属性名称中带有“系统”的 JSON 对象中提取值
问题描述
一开始我想说我无论如何都不是 C# 开发人员,但是在我的工作中,我收到了一个任务,我必须在 .net 中编写简单的 Web 服务。该任务不是很复杂,但是我遇到了发送到我们的 Web 服务的 JSON 有效负载在属性名称中具有“系统”的问题:
"resource": {
"fields": {
"System.AreaPath": "someData",
"System.TeamProject": "someData",
"System.IterationPath": "someData"
}
}
我试图通过使用来获得这些值:
public class Resource
{
public Fields System.AreaPath { get; set; }
}
但是我收到一个错误(“系统”是一个命名空间,但像一个类型一样使用。)是否有关于如何执行此类任务的最佳实践?谢谢你。
解决方案
一个简单的选择是在属性中指定 JSON 属性。如果您使用的是 Json.NET,则可以使用[JsonProperty]
它。完整示例:
using System;
using System.IO;
using Newtonsoft.Json;
public class Fields
{
[JsonProperty("System.AreaPath")]
public string AreaPath { get; set; }
[JsonProperty("System.TeamProject")]
public string TeamProject { get; set; }
[JsonProperty("System.IterationPath")]
public string IterationPath { get; set; }
}
public class Resource
{
public Fields Fields { get; set; }
}
class Program
{
static void Main()
{
string json = File.ReadAllText("test.json");
var resource = JsonConvert.DeserializeObject<Resource>(json);
Console.WriteLine(resource.Fields.TeamProject);
}
}
JSON (removed the "resource" part to make it a complete JSON document; I assume you know how to handle this if necessary):
{
"fields": {
"System.AreaPath": "someData",
"System.TeamProject": "team project",
"System.IterationPath": "someData"
}
}
Output: team project
推荐阅读
- javascript - 使用条件导致 React 渲染限制错误
- python - 如何格式化 json 以便我可以解析浮点数和字符串
- javascript - 在 discordjs 中找不到 mysql 语法错误
- java - Java 生产者消费者 IllegalMonitorStateException
- flutter - 自动热重启和重新加载停止发生 - Flutter/VS Code
- c# - 是否可以添加
控制到 ? - c# - 在 Xamarin 表单中的 AppsContext.Instance 中保留数据
- for-loop - 控制 awk 数组输出
- python - 如何使用硒登录
- json - 在 Confluent 平台模式注册表中使用 Json 格式?