C# 如何从对象中的对象中提取值?
我对如何从一个对象中的一个对象获取一个值有点困惑。我尝试了许多方法,但似乎无法返回值 var结果返回以下内容:C# 如何从对象中的对象中提取值?,c#,arrays,json,linq,object,C#,Arrays,Json,Linq,Object,我对如何从一个对象中的一个对象获取一个值有点困惑。我尝试了许多方法,但似乎无法返回值 var结果返回以下内容: { "Date": "2016-12-14" "Stats": { "A": 9.23, "B": 5.63, "C": 0 } } 尝试访问“Stats”值的代码: 预期结果: { "Date": "2016-12-14" "Stats": { "A": 9.23, "B": 5.63 } } 无需将json反序列化
{
"Date": "2016-12-14"
"Stats": {
"A": 9.23,
"B": 5.63,
"C": 0
}
}
尝试访问“Stats”值的代码:
预期结果:
{
"Date": "2016-12-14"
"Stats": {
"A": 9.23,
"B": 5.63
}
}
无需将json反序列化为对象,因为当您从json中删除属性时,属性
C
的对象的默认值仍然为0,这将生成相同的json
检查
publicstaticvoidmain(字符串[]args)
{
字符串json=@”{
“日期”:“2016-12-14”,
“统计数据”:{
“A”:9.23,
“B”:5.63,
“C”:0
}
}";
JObject result=JsonConvert.DeserializeObject(json);
JObject statsObj=(JObject)结果[“Stats”];
对于(int i=statsObj.Properties().Count()-1;i>=0;i--)
{
var propValue=statsObj.Properties().Skip(i).FirstOrDefault();
if(decimal.Parse(propValue.Value.ToString())我建议在Json.NET中使用JObject
模型,而不是在这种情况下使用强类型反序列化。@L.B好的,他可以使用double。TryParse@L.B他想检查的不仅仅是Stats或?@user3515765的属性。你可以检查那里的链接是否有效完整示例。如果有帮助,请将答案标记为正确。@mybirthnamepublic static void Main(){Console.WriteLine(“Hello World”);}
不是一个工作示例…:)@L.B抱歉dontNetFiddle没有保存它。请立即检查它
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
}
}
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();
}