gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 18:18:34 25 4
gpt4 key购买 nike

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

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com