在 C# 中过滤对象值
Filtering Object values in C#
我有一个 C# web Api 接收以下对象:
"cars": {
"bmw": true,
"benz": false,
"kia": true,
"hyundai": false,
"madza": false,
"ford": false
}
class属性如下:
public CarsViewModel cars{ get; set; }
如何获取上述对象中所有为真的值?
您可以将接收到的对象解析到字典中,并且 select 仅当值为 true 时才是键。
string json = "{\"bmw\": true,\"benz\": false,\"kia\": true,\"hyundai\": false,\"madza\": false,\"ford\": false}";
var dict = JsonConvert.DeserializeObject<Dictionary<string,bool>>(json);
List<string> cars = dict.Where(x=>x.Value).Select(y=>y.Key).ToList();
您可以通过以下方式查看结果:
cars.ForEach(y => Console.Write("{0}\n", y));
PS。对于序列化,您必须使用 Newtonsoft.Json
命名空间。
你试试这个代码
string jsonstring = "{\"cars\": {\"bmw\": \"true\", \"benz\": \"false\", \"kia\": \"true\", \"hyundai\": \"false\", \"madza\": \"false\", \"ford\": \"false\"}}";
dynamic data = JObject.Parse(jsonstring);
CarsViewModel obj = new CarsViewModel();
var mydetails2 = JsonConvert.SerializeObject(data.cars);
var mydetails3 = JsonConvert.DeserializeObject<Dictionary<string, bool>>(mydetails2);
foreach (var pair in mydetails3)
{
// Console.WriteLine("{0}, {1}", pair.Key, pair.Value);
if (pair.Value == true)
{
if (pair.Key == "bmw")
{
obj.bmw = pair.Value;
}
else if (pair.Key == "benz")
{
obj.benz = pair.Value;
}
else if (pair.Key == "kia")
{
obj.kia = pair.Value;
}
else if (pair.Key == "hyundai")
{
obj.hyundai = pair.Value;
}
else if (pair.Key == "madza")
{
obj.madza = pair.Value;
}
else if (pair.Key == "ford")
{
obj.ford = pair.Value;
}
}
}
希望对你有所帮助..
我有一个 C# web Api 接收以下对象:
"cars": {
"bmw": true,
"benz": false,
"kia": true,
"hyundai": false,
"madza": false,
"ford": false
}
class属性如下:
public CarsViewModel cars{ get; set; }
如何获取上述对象中所有为真的值?
您可以将接收到的对象解析到字典中,并且 select 仅当值为 true 时才是键。
string json = "{\"bmw\": true,\"benz\": false,\"kia\": true,\"hyundai\": false,\"madza\": false,\"ford\": false}";
var dict = JsonConvert.DeserializeObject<Dictionary<string,bool>>(json);
List<string> cars = dict.Where(x=>x.Value).Select(y=>y.Key).ToList();
您可以通过以下方式查看结果:
cars.ForEach(y => Console.Write("{0}\n", y));
PS。对于序列化,您必须使用 Newtonsoft.Json
命名空间。
你试试这个代码
string jsonstring = "{\"cars\": {\"bmw\": \"true\", \"benz\": \"false\", \"kia\": \"true\", \"hyundai\": \"false\", \"madza\": \"false\", \"ford\": \"false\"}}";
dynamic data = JObject.Parse(jsonstring);
CarsViewModel obj = new CarsViewModel();
var mydetails2 = JsonConvert.SerializeObject(data.cars);
var mydetails3 = JsonConvert.DeserializeObject<Dictionary<string, bool>>(mydetails2);
foreach (var pair in mydetails3)
{
// Console.WriteLine("{0}, {1}", pair.Key, pair.Value);
if (pair.Value == true)
{
if (pair.Key == "bmw")
{
obj.bmw = pair.Value;
}
else if (pair.Key == "benz")
{
obj.benz = pair.Value;
}
else if (pair.Key == "kia")
{
obj.kia = pair.Value;
}
else if (pair.Key == "hyundai")
{
obj.hyundai = pair.Value;
}
else if (pair.Key == "madza")
{
obj.madza = pair.Value;
}
else if (pair.Key == "ford")
{
obj.ford = pair.Value;
}
}
}
希望对你有所帮助..