2016-04-15 61 views
1

我有一个Jobject。JSON:使用c在特定条件下获取列表中的属性值#

{ 
    "address": "test", 
    "state": "", 
    "postcode": "", 
    "membergroup": { 
    "User1": false, 
    "User2": false, 
    "User3": false, 
    "User4": true, 
    "User5": false, 
    "User6": true 
    } 
} 

我想使用c#获取字符串列表中的所有真实值的membergroup属性值。

like {“user4”,“user6”}

这可能吗? 有什么建议吗?

+0

究竟是哪里*“我正在尝试”*?请向我们展示。 – Sinatr

+0

你到目前为止尝试过什么?您可以将所有** membergroup **值反序列化为一个'array',然后选择'true'值。 –

+0

@ArthurRey ..我到目前为止还没有尝试..只是检查是否有可能?新的Json.net。是的反序列化成员组可以做我认为的工作,我会检查它。谢谢 – Harshit

回答

1

如果您不想创建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 
+0

@Harshit没问题,很高兴它帮助 –

1

使用Json.NET:

创建一个类,将代表您的JSON在C#:

public class Entity 
{ 
    [JsonProperty("address")] 
    public string Address { get; set; } 
    [JsonProperty("state")] 
    public string State { get; set; } 
    [JsonProperty("postcode")] 
    public string PostCode { get; set; } 
    [JsonProperty("membergroup")] 
    public Dictionary<string, bool> MemberGroup { get; set; } 
} 

让你的JSON字符串中的,将其转换到C#类,并挑选了唯一的真正价值您的membergroup

var entity = JsonConvert.DeserializeObject<Entity>(jsonString); 
entity.MemberGroup = entity.MemberGroup.Where(x => x.Value).ToDictionary(k => k.Key, v => v.Value); 
+0

什么是jsonString?我有一个jobject我需要转换/解析为字符串? – Harshit

+0

使用jobject.ToString() –

相关问题