c# - 从 Request.form 获取嵌套值
问题描述
我正在尝试从使用 c# webforms 中的“POST”方法收到的数据中提取一些值,示例数据是:
{
"ProductStockDetailsID":8015425,
"LocationID":24213,
"ProductID":19284305,
"MinStock":null,
"MaxStock":null,
"OnOrder":0,
"Alerts":false,
"ProductStocks":[
{
"StockID":11839663,
"CurrentStock":68,
"CurrentVolume":0,
"CreatedDate":"2019-06-30T09:58:38.4",
"DeletedDate":null,
"CostPrice":0.00000,
"ProductStockDetailsID":8015425
}
]
}
我用来成功Request.Form["ProductID"]
提取ProductID
,但我无法提取CurrentStock
值,因为它看起来是从ProductStocks
.
解决方案
为什么不为请求定义类,然后只解析请求。为此,您需要覆盖 ProcessRequest 方法,例如
public override void ProcessRequest(HttpContext context)
{
string json;
using (var reader = new StreamReader(context.Request.InputStream))
{
json = reader.ReadToEnd();
}
var data = JsonConvert.DeserializeObject<RequestData>(json);
base.ProcessRequest(context);
ProcessRequest(data);
}
private void ProcessRequest(RequestData data)
{
// ... your code
}
要解析的类是:
public class RequestData
{
public int ProductStockDetailsID { get; set; }
public int LocationID { get; set; }
public int ProductID { get; set; }
public object MinStock { get; set; }
public object MaxStock { get; set; }
public int OnOrder { get; set; }
public bool Alerts { get; set; }
public Productstock[] ProductStocks { get; set; }
}
public class Productstock
{
public int StockID { get; set; }
public int CurrentStock { get; set; }
public int CurrentVolume { get; set; }
public DateTime CreatedDate { get; set; }
public object DeletedDate { get; set; }
public float CostPrice { get; set; }
public int ProductStockDetailsID { get; set; }
}
现在只需使用data.ProductStocks
推荐阅读
- javascript - Javascript 功能无法启动,我不确定如何解决?
- file - 从 avi 文件中提取正确的创建日期
- azure-logic-apps - 逻辑应用将文件从 FTP 复制到 Blob,但忽略已复制的文件
- google-cloud-dataflow - 如何在 Python 中为 Google Dataflow Pipeline 设置编码器?
- python - 如何在 Python 中从具有值的变量生成所有可能的组合
- vue.js - 在我的 vue 项目中,我尝试使用简单的引导程序以及无法使用引导程序的 sass 和哈巴狗。它给了我错误
- javascript - 如何记录合并父记录及其所有子记录
- html - 一个组件的Angular 2+多个HTML模板
- sql - 使用 select 语句将数据更新到表中
- r - 仅删除数字内的逗号