c# - 使用 lambda 表达式使用 c# 解析 Json 文件中数组的值
问题描述
我有这个 .Json 文件:
[
{
"targets":[
"192.168.1.101:9182",
"192.168.1.103:9100",
"192.168.1.105:9182"
]
}
]
我想按值解析目标和它们。我已经做了一个解析 Json 文件并注销结果的函数: 类模型是:
public class targetResponse
{
public IList<string> targets { get; set; }
}
在我的控制器中,我有这个功能可以注销所有值:
[HttpGet]
public async Task<IEnumerable<targetResponse>> Get()
{
IList<targetResponse> myList = new List<targetResponse>();
var jsonString = System.IO.File
.ReadAllText(@"D:\\Paths\\targets.json");
myList = JsonConvert.DeserializeObject<List<targetResponse>>(jsonString);
return myList;
}
我要创建的功能是我只想从该 Json 文件中获取一个值,我尝试执行以下操作,但它不起作用:
[HttpGet("{string}")]
public async Task<dynamic> Get(string _string)
{
IList<targetResponse> myList = new List<targetResponse>();
var jsonString = System.IO.File
.ReadAllText(@"D:\\Paths\\targets.json");
myList = JsonConvert.DeserializeObject<List<targetResponse>>(jsonString);
return myList.FirstOrDefault().targets.Select(r=>r.ToString()==_string);
}
如果有任何有关如何分享的教程,我还想创建一个更新/创建/删除方法(CRUD)谢谢
解决方案
您Linq
在方法中有一个不正确的陈述Get
。代替
myList = JsonConvert.DeserializeObject<List<targetResponse>>(jsonString);
return myList.FirstOrDefault().targets.Select(r=>r.ToString()==_string);
你可以写
myList = JsonConvert.DeserializeObject<List<targetResponse>>(jsonString);
return myList.FirstOrDefault().targets.FirstOrDefault(r => r == _string);
使用Where
orFirstOrDefault
代替Select
,否则你会得到一个布尔值列表。也不需要使用ToString()
,因为targets
已经是字符串列表
推荐阅读
- tableau-api - Tableau 不支持 CHARINDEX 函数
- python - 使用 Pandas/NumPy 提高分辨率
- c# - 对使用 QueryString 的控制器进行单元测试
- regex - perl中的自动生成替换
- django - url中有两个slug
- python - 访问创建另一个类的类
- cmake - CMake 继承静态库依赖
- python - 你什么时候在 python 中使用双 datetime.datetime?
- php - Wordpress 自定义 wp-cron 类不会触发预定的处理程序
- python - 如何在python中测试模拟调用的值是否在可能值范围内