2016-04-15 1 views
1

私はJobjectを持っています。JSON:Cを使用して特定の条件のリストのプロパティ値を取得する#

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

私は、c#を使用して文字列のリスト内のすべての真値のmembergroupプロパティ値を取得しようとしています。

{user4 "、" user6 "}

これは可能ですか? これの提案はどうですか? Json.NETを使用して

+0

正確には「*しようとしています」*ですか?私たちに見せてください。 – Sinatr

+0

あなたはこれまでに何を試しましたか?すべての** membergroup **値をデシリアライズして 'array'にし、その後に' true'値を選ぶことができます。 –

+0

@ArthurRey ..私は今まで試したことがありません..ちょうどそれが可能かどうかチェックしていますか? Json.netの新機能です。はい、メンバーシップを外しているメンバーグループは私が思う仕事をすることができます.iはそれをチェックします。ありがとう – 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

C#であなたのJSONを代表するクラスを作成します。

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()を使用してください。 –

関連する問題