c# - 如何从对象中的对象抽象值?

标签 c# arrays json linq object

我对如何从对象中的对象获取值有点困惑。我尝试了很多方法,但似乎无法返回值。

var 结果返回 Json 这个:

{
  "Date": "2016-12-14"
  "Stats": {
    "A": 9.23,
    "B": 5.63,
    "C": 0
  }
}

尝试访问“Stats”值的代码:

 var apiResult = await client.GetStringAsync(url);
 var results = apiResult.DeserializeObject<StatsLA>(apiResult);
 object[] getValues = results.GetType()
     .GetProperties()
     .Select(p =>
        {
           object value = p.GetValue(results);
           return value == null ? null : value.ToString();
           })
        .ToArray();

最终目标是遍历结果并仅返回大于 0 的值。在此示例中,只有“A”和“B”会返回。我知道如何执行循环/linq 语句,但首先我需要获取值。任何建议将不胜感激,或者只是指出如何处理的正确方向。

这是类文件:

public class StatsLA
{
  public string Date { get; set; }
  public LocalStats stats { get; set; }
}
public class LocalStats
{
    public double A { get; set; }
    public double B { get; set; }
    public double C { get; set; }
}

期望的结果:

{
  "Date": "2016-12-14"
  "Stats": {
    "A": 9.23,
    "B": 5.63
  }
}

最佳答案

没有必要 Deserialize json 对象,因为当你从 json 中删除属性时,你的对象的默认值为属性 C仍然为 0,这将生成相同的 json。

检查 full example at dotNetFiddle

public static void Main(string[] args)
{
    string json = @"{
  ""Date"": ""2016-12-14"",
  ""Stats"": {
    ""A"": 9.23,
    ""B"": 5.63,
    ""C"": 0
  }
}";


    JObject result = JsonConvert.DeserializeObject<JObject>(json);
    JObject statsObj = (JObject)result["Stats"];

    for(int i = statsObj.Properties().Count()-1; i>=0; i--)
    {
        var propValue = statsObj.Properties().Skip(i).FirstOrDefault();

        if (decimal.Parse(propValue.Value.ToString()) <= 0)
            propValue.Remove();
    }

    string endResult = result.ToString();

}

如果在Stats对象的值不同于十进制类型,请使用 decimal/double.TryParse如果 TryParse 则删除元素为真,输出的值为double/decimal <= 0 .

关于c# - 如何从对象中的对象抽象值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41152507/

相关文章:

c# - 确保类的所有新实例都实现所有字段或属性

c# - 使用 LINQ 获取特定子类型的列表条目

c# - EF Core 2.0 迁移 - dotnet ef migrations 'script' 命令输出空白文件

javascript - 使用express.json和bodyParser一样吗?

c# - 从 Linq 中的数据表中选择不同的行

php - 在不使用 shuffle() 函数的情况下在 PHP 中随机化数组顺序的最佳方法是什么?

java - 在 JSON 数组中查找 JSON 对象

javascript - 如何循环遍历对象数组并根据重复条目将键值对添加到另一个对象数组中

JQuery JSON 替换循环中的字符

python - 如何在 Django 中序列化模型?