在 post call 中读取一个 json 对象并从所有名称值对中获取值
Posted
技术标签:
【中文标题】在 post call 中读取一个 json 对象并从所有名称值对中获取值【英文标题】:Read a json object in a post call and get value from all the name value pairs 【发布时间】:2022-01-15 11:27:20 【问题描述】:JSON 解析为 Web API 后调用(正文)
"Name1": "Value1",
"Name2": "Value2",
"Name3": "Value3",
"Name4": "Value4"
让我们称这个对象为 NameValueObject
public class NameValueObject
public Name1 get; set;
public Name2 get; set;
public Name3 get; set;
public Name4 get; set;
我希望看到的是能够解析json对象并转换成列表
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
【问题讨论】:
【参考方案1】:您可以创建 List
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
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();
【讨论】:
【参考方案2】:您可以像这样使用Reflection 和Linq 来获取NameValueObject
中属性的所有值:
var values = nameValueObject.GetType().GetProperties().Select(v => v.GetValue(nameValueObject));
如果您想同时获取属性的名称和值,您可以像这样创建一个字典:
var dictionary = nameValueObject.GetType().GetProperties().ToDictionary(v => v.Name, v => v.GetValue(nameValueObject));
【讨论】:
以上是关于在 post call 中读取一个 json 对象并从所有名称值对中获取值的主要内容,如果未能解决你的问题,请参考以下文章
AJAX post call 在我的 JSON 文件中存储两次数据