簡體   English   中英

在調用后讀取 json object 並從所有名稱值對中獲取值

[英]Read a json object in a post call and get value from all the name value pairs

JSON 解析為 Web API 后調用(正文)

{
    "Name1": "Value1",
    "Name2": "Value2",
    "Name3": "Value3",
    "Name4": "Value4"
}

讓我們稱之為 object NameValueObject

 public class NameValueObject
    {
        public Name1 { get; set; }
        public Name2 { get; set; }
        public Name3 { get; set; }
        public Name4 { get; set; }
     }

我希望看到的是能夠解析 json object 並將其轉換為列表

public async Task<List<NameValueObject>> EvaluateJson ([FromBody] NameValueObject request)
{
  string serializerequest = JsonConvert.SerializeObject(request);
  //What do i next , I just to want to get a list of the values sent through the json object

}

您可以使用ReflectionLinq來獲取NameValueObject中屬性的所有值,如下所示:

var values = nameValueObject.GetType().GetProperties().Select(v => v.GetValue(nameValueObject));

如果您想同時獲取屬性的名稱和值,可以創建如下字典:

var dictionary = nameValueObject.GetType().GetProperties().ToDictionary(v => v.Name, v => v.GetValue(nameValueObject));

您可以創建 List<NameValueObject> 對象

var json= JsonConvert.Serialize(request);

List<NameValueObject> objects = JsonConvert.DeserializeObject<Dictionary<string, string>>(json)
.Select(i => new NameValueObject {Name=i.Key, Value=i.Value} )
.ToList();

或只是值列表

var json= JsonConvert.Serialize(request);
                                     
List<string> values=JsonConvert.DeserializeObject<Dictionary<string, string>>(json)
 .Select(i => i.Value )
.ToList();               

如果你想要 List<NameValueObject>,你必須創建這個 class

public class NameValueObject
{
    public string Name { get; set; }
    public string Value { get; set; }

}

或者我更喜歡這個

public async Task<List<NameValueObject>> EvaluateJson ([FromBody] JObject jsonObject)
{
   return  jsonObject.Properties()
            .Select ( i => new NameValueObject {
             Name =  i.Name, Value = (string) i.Value }).ToList();
}

或只是值列表

List<string> Values = jsonObject.Properties().Select( i => (string) i.Value ).ToList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM