我有一個名為的 Web API 方法
GetDetails(int id, string Name, string country)
在 API 中,我需要獲取 id 值以進行驗證,我正在嘗試使用以下代碼獲取原始 JASON,
using (var reader = new StreamReader(context.Request.Body))
{
var body = reader.ReadToEndAsync();
}
我在變數體中低于原始資料,如下所示
{"query":"query\n{\n\n GetDetails(id:1234,Name:"lolo",country:"US" { }\n \n}\n"}
我正在嘗試使用以下代碼對字串進行反序列化
using (var reader = new StreamReader(context.Request.Body))
{
var body = reader.ReadToEndAsync();
string[] theJson = JsonConvert.DeserializeObject<string[]>(body.Result.ToString());
}
我嘗試了以下,
IEnumerable<string> strings = JsonConvert.DeserializeObject<IEnumerable<string>>(body.Result.ToString());
我得到一個例外:
Newtonsoft.Json.JsonReaderException:決議值時遇到意外字符:S. Path '', line 0, position 0. at Newtonsoft.Json.JsonTextReader.ParseValue() at Newtonsoft.Json.JsonReader.ReadAndMoveToContent() at Newtonsoft.Json。 JsonReader.ReadForType(JsonContract contract, Boolean hasConverter) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent) at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType) at Newtonsoft.Json JsonSerializer.Deserialize(JsonReader reader, Type objectType) at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings) at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings) at Newtonsoft.Json .JsonConvert.DeserializeObject[T](字串值)
如何從上述原始 Json 中獲取 id,謝謝您的指導。
uj5u.com熱心網友回復:
首先,您提供的 Json 格式不正確,因此系統無法決議它。您可以告訴我們您如何將 Json 發送到控制器。
其次,您可以嘗試從 Query 的 HTTP 請求中獲取引數,從請求正文中獲取引數更容易。第三,如果你必須從請求體中獲取引數,我建議你使用模型系結。這是我的代碼:
創建一個包含您的引數的類:
public class Test { public int Id { get; set; } public string Name { get; set; } public string Country { get; set; } }在控制器方法中使用模型系結:
public int ID { get; set; } [HttpPost] [Route("[action]")] public void GetDetails([FromBody] Test test) { ID = test.Id; }
將 Json 發送到控制器:
{ "Id" : 5, "Name" : "Name from Json", "Country" : "USA" }
然后您將在 API 操作方法中獲取 Id 值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/343453.html
上一篇:AddStackExchangeRedisCache-創建了多個連接
下一篇:用戶輸入的服務器端驗證
