C# JSON:使用c在特定条件下获取列表中的属性值#

C# JSON:使用c在特定条件下获取列表中的属性值#,c#,json.net,C#,Json.net,我有一份工作 { "address": "test", "state": "", "postcode": "", "membergroup": { "User1": false, "User2": false, "User3": false, "User4": true, "User5": false, "User6": true } } 我正在尝试使用c#获取字符串列表中所有真值的membergroup属性值 比如{“use

我有一份工作

{
  "address": "test",
  "state": "",
  "postcode": "",
  "membergroup": {
    "User1": false,
    "User2": false,
    "User3": false,
    "User4": true,
    "User5": false,
    "User6": true
  }
}
我正在尝试使用c#获取字符串列表中所有真值的membergroup属性值

比如{“user4”,“user6”}

这可能吗? 请对此提出建议?

使用Json.NET:

创建一个用C#表示json的类:


如果不想创建C#对象,也可以使用JObect

注: 根据获取json的方式,可能不需要在第一步中将其序列化回json字符串。它应该已经以json字符串的形式出现了

using Newtonsoft.Json.Linq;



var json = JsonConvert.SerializeObject(yourObject);

var entireJson = JToken.Parse(json);
var propertyList = (JObject)entireJson["membergroup"];

foreach (var property in propertyList)
{
    var key = property.Key;
    var value = (bool)property.Value;

    if (value)
    {
        key.Dump();
    }
}

//User4
//User6

“我在努力”到底在哪里?请给我们看看。到目前为止你都试了些什么?您可以将所有成员组值反序列化为
数组
,然后选择
true
值。@ArthurRey。。到目前为止我还没有试过。。只是看看有没有可能?Json.net的新功能。是的,反序列化成员组可以完成我认为的工作。我会检查它。谢谢什么是jsonString?我有一个jobject我需要将它转换/解析为string吗?使用jobject.ToString()
var entity = JsonConvert.DeserializeObject<Entity>(jsonString);
entity.MemberGroup = entity.MemberGroup.Where(x => x.Value).ToDictionary(k => k.Key, v => v.Value);
using Newtonsoft.Json.Linq;



var json = JsonConvert.SerializeObject(yourObject);

var entireJson = JToken.Parse(json);
var propertyList = (JObject)entireJson["membergroup"];

foreach (var property in propertyList)
{
    var key = property.Key;
    var value = (bool)property.Value;

    if (value)
    {
        key.Dump();
    }
}

//User4
//User6