2016-04-15 59 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() –

相關問題