我有一个JSON URI,我正在使用它作为数据源。我正在编写一个Web API,其中我需要检索用户输入的任何特定字段的数据。
问题是,我不知道如何使用“元素”字段,它只不过是用户输入的字段的名称来过滤JSON数据源。
例如,下面的JSON是我的数据源,我只需要获取table_no的数据。所以用户将输入字段table_no
,响应应该只显示table_no
的数据。
"data": [
{
"order": 1,
"table_no": 94683,
"table_book_date": "20240103100000",
},
{
"order": 2,
"table_no": 94544,
"table_book_date": "20240103100000",
}
]
字符串
我有一段C#代码,其中“element”是一个输入,可以是任何字段。这里是table_no
,但不知道如何使用它来过滤我的JSON数据。
[HttpGet("[action]/{element}")]
public async Task<IActionResult> Get(string element)
{
try
{
var restaurantData= await DeSerializeJsonData(element);
return Ok(new RestaurantDataResponse()
{
RestaurantResponse = restaurantData.data
}
);
}
catch (HttpRequestException httpRequestException)
{
return BadRequest($"Error");
}
}
private async Task<RestaurantData> DeSerializeJsonData(string element)
{
using (var client = new HttpClient())
{
var response = await client.GetFromJsonAsync<RestaurantData\>($"<json url>.json");
return response;
}
}
型
最后的React应该是这样的
{ "data": [
{ "table_no": 94683, },
{ "table_no": 94544, }
] }
型
1条答案
按热度按时间zfciruhq1#
第一个问题是,如果你希望输出只是根据传入的“element”值从餐厅数据中筛选出的字段,那么你不会返回RestarauntData。因此,返回类型不能是静态类型,除非你喜欢属性的名称是静态的,比如“selectedValue”,可选地带有一个值名称来指示你筛选出的“element”:
字符串
像这样的spething可以通过为上面的数据声明一个类型来实现:
型
.然后填充:
型
但是,如果你想返回JSON字符串,那么你可以让一个方法返回所需的JObject:
型
这将返回所需的:
型
对于
string.Replace
来说,这是一个小技巧,因为Select
需要一个常量字符串作为返回的字段名,我们使用一个占位符,然后在结果JSON中替换。如果你想要“data”标签为[]的容器数组,你可能需要调整返回。