簡體   English   中英

JSON:使用C#在特定條件下獲取列表中的屬性值

[英]JSON: Getting properties value in a list on a specific condition using c#

我有一個Jobject。

{
  "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的類:

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);

如果不想創建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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM