微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法在C#中过滤JSON

如何解决无法在C#中过滤JSON

我正在尝试通过id过滤name个连接,例如返回连接的id,其中name等于 12345678

我能够获取所有记录以及idname的值。

但是,我只想归档它,例如我怎么只能得到记录id等于 12345678 的记录name?我在下面编写了代码(我知道这很愚蠢),并且返回了所有记录。

代码

public class Alias
{
    public string name { get; set; }
}

public class Connections
{
    public Alias alias { get; set; }
    public string id { get; set; }
}

public class RootObject
{
    public List<Connections> connections { get; set; }
} 

    HttpClient hTTPClient = new HttpClient();

    UserID = "12345678";

    Uri getConnections = new Uri(string.Format("http://0.0.0.0:0000/getConnections"));
    HttpResponseMessage restponseConnections = await hTTPClient.GetAsync(getConnections);
    string contentConnections = await restponseConnections.Content.ReadAsstringAsync();
    RootObject obj = JsonConvert.DeserializeObject<RootObject>(contentConnections);

    foreach (Connections i in obj.connections)
    {
        if(!(i.alias.name == UserID))
        {
            Console.WriteLine(i.id);
        }
    }

JSON

    {
        "success": true,"connections": [
            {
                "typeName": "AF.ConnectionRecord"
                "alias": {
                    "name": "12345678","imageUrl": null
                },"endpoint": {
                    "did": null,"verkey": [
                        "6KZYwhxzxWcrZnQravocia2XHyoK9V8pBVT7nBdAd5JX"
                    ],"uri": "http://0.0.0.0:0000"
                },"state": 2,"id": "d0e4ccbf-5e2a-47bb-a218-78ea93a6066b","createdAtUtc": "2020-10-27T08:01:43.0724247","updatedAtUtc": "2020-10-27T08:01:45.7475196"
            }
        ]
    }

解决方法

使用LINQ

using System.Linq;
...
var list = obj.connections.Where(c => c.alias.name == "xyz").ToList();
,

在您要获得1条记录的情况下,建议您使用LINQ

using System.Linq;

//Rest of your code
var recId = obj.connections.Where(c => c.alias.name == "1234567").FirstOrDefault();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。