我有一个C#web Api收到以下对象:
"cars": {
"bmw": true,
"benz": false,
"kia": true,
"hyundai": false,
"madza": false,
"ford": false
}
class属性如下:
public CarsViewModel cars{ get; set; }
如何获得上述对象中的所有值?
答案 0 :(得分:2)
您可以将收到的对象解析为字典,并仅在值为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
命名空间。
答案 1 :(得分:0)
你试试这段代码
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;
}
}
}
我希望它对你有所帮助..