将 PHP 命名数组映射到 C# 控制器参数
Map PHP named array to C# controller parameter
我有第三方 API 提供 PHP 的文档,但我使用的是 C# 和 ASP.NET MVC。
API 方法之一作为参数发送 Fields
。
FIELDS
是一个包含字段 ID
的数组,其中存储了 int 值。
所以在 PHP 中会是这样的:
$fields=array(ID=>4);
在 C# 中为控制器方法获取此类参数的最佳方法是什么?
我是这样做的:
public class FieldsModel
{
public int ID { get; set; }
}
[HttpPost]
public string Test(FieldsModel[] FIELDS)
{
//some code goes here
}
此代码有效,但也许有更好的解决方案将 PHP 命名数组映射到 C# 控制器参数?
P.S。实际上 FIELDS
数组总是只包含一个 ID,如果重要的话。
由于 php 数组可以用作键值数据结构,当它序列化为 JSON 时,您会得到类似于:
{
"ID": 4
}
在 C# 中管理它的最简单方法(知道 C# 主要用于编写面向对象的代码),是将 JSON 解析为一个对象,该对象包含一个 属性 每个JSON 键。您还可以像这样更改使用字段而不是属性:
public class FieldsModel
{
public int ID;
}
但是不推荐第二种方法。
我认为您只会得到一个 "Field",因此您可以重写您的测试端点以等待单个 FieldsModel,如下所示:
[HttpPost]
public string Test(FieldsModel fields)
{
//some code goes here
}
我有第三方 API 提供 PHP 的文档,但我使用的是 C# 和 ASP.NET MVC。
API 方法之一作为参数发送 Fields
。
FIELDS
是一个包含字段 ID
的数组,其中存储了 int 值。
所以在 PHP 中会是这样的:
$fields=array(ID=>4);
在 C# 中为控制器方法获取此类参数的最佳方法是什么?
我是这样做的:
public class FieldsModel
{
public int ID { get; set; }
}
[HttpPost]
public string Test(FieldsModel[] FIELDS)
{
//some code goes here
}
此代码有效,但也许有更好的解决方案将 PHP 命名数组映射到 C# 控制器参数?
P.S。实际上 FIELDS
数组总是只包含一个 ID,如果重要的话。
由于 php 数组可以用作键值数据结构,当它序列化为 JSON 时,您会得到类似于:
{
"ID": 4
}
在 C# 中管理它的最简单方法(知道 C# 主要用于编写面向对象的代码),是将 JSON 解析为一个对象,该对象包含一个 属性 每个JSON 键。您还可以像这样更改使用字段而不是属性:
public class FieldsModel
{
public int ID;
}
但是不推荐第二种方法。
我认为您只会得到一个 "Field",因此您可以重写您的测试端点以等待单个 FieldsModel,如下所示:
[HttpPost]
public string Test(FieldsModel fields)
{
//some code goes here
}