C#:Json 到对象:获取错误 ex = {"Unexpected character encountered while parsing value: {. Path 'result', line 1, position 12."}

C#: Json to Object: Getting error ex = {"Unexpected character encountered while parsing value: {. Path 'result', line 1, position 12."}

我不确定我的 class 设置是否错误或没有导致错误。我对使用 Json 还很陌生。

函数代码:

Response = OpenIDM.GetUserInformation(email, fields);
            LDAPMembership = JsonConvert.DeserializeObject<LDAPMembership>(Response);

            string id = LDAPMembership._id;

class:

public class LDAPMembership
{
    public string[] result { get; set; }
    public string _id { get; set; }
    public string _rev { get; set; }
    public string[] ahaMemberGroup { get; set; }
    public string[] ahaDrupalPermissions { get; set; }
    public string resultCount { get; set; }
    public string pagedResultsCookie { get; set; }
    public string totalPagedResultsPolicy { get; set; }
    public string totalPagedResults { get; set; }
    public string remainingPagedResults { get; set; }
}

Json 字符串:

{\"result\":[{\"_id\":\"98d0d0b9-9506-40b4-84c4-e005d4bc25ec\",\"_rev\":\"1\",\"ahaMemberGroup\":[\"AONE\",\"AHA\"]}],\"resultCount\":1,\"pagedResultsCookie\":null,\"totalPagedResultsPolicy\":\"NONE\",\"totalPagedResults\":-1,\"remainingPagedResults\":-1}

抛出异常: 解析值时遇到意外字符:{。路径 'result',第 1 行,位置 12。"}

我怀疑我没有在 class 中正确设置 "result"。我四处搜索,发现了一个类似的问题并尝试了响应,但没有用。

此行引发错误:

LDAPMembership = JsonConvert.DeserializeObject<LDAPMembership>(Response);

Visual Studio 可以为您做到这一点。获取干净的 JSON(没有所有那些 \"),将 Json 放在剪贴板上,将光标放在 C# 文件中,然后 select

Edit, Paste Special, Classes from JSon

public class Rootobject
{
    public Result[] result { get; set; }
    public int resultCount { get; set; }
    public object pagedResultsCookie { get; set; }
    public string totalPagedResultsPolicy { get; set; }
    public int totalPagedResults { get; set; }
    public int remainingPagedResults { get; set; }
}

public class Result
{
    public string _id { get; set; }
    public string _rev { get; set; }
    public string[] ahaMemberGroup { get; set; }
}

按原样使用或稍微清理一下。将 Rootobject 更改为您喜欢的任何值。
请注意,您可能想要修复 pagedResultsCookie 的类型。